2015-04-09 2 views
1

Я добавил Струны "Hello", "Cat", "Dog" в ArrayList под названием values передал его методу doubleIt() который должен возвращать список все в два раза, т.е.Проблемы с возвращением ArrayList

"Hello", "Hello", "Cat", "Cat", "Dog", "Dog" 

Но все Im получаю []. Что я могу сделать здесь неправильно?

import java.util.*; 

public class Addition 
{ 

    public static void main(String [] args) 
    { 
     List<String> values = new ArrayList<String>(); 
     values.add("Hello"); 
     values.add("Cat"); 
     values.add("Dog"); 

     values = doubleIt(values); 
     System.out.println(values); 

    } 

    public static List<String> doubleIt(List<String> values) 
    { 
     List<String> temp = new ArrayList<>(); 

     for(int i = 0; i < temp.size(); i++) 
     { 
      temp.add(values.get(i*2)); 
     } 
     return temp; 
    } 
} 
+0

вместо 'temp.add (values.get (i * 2));' вы должны использовать 'temp.add (values.get (i)); temp.add (values.get (i)); 'и' temp.size() 'заменить на' values.size() ' –

+0

Каков размер' temp' при запуске цикла? –

+2

Или просто 'temp.addAll (значения);' дважды ... – MadProgrammer

ответ

2

Ваша первая ошибка здесь ...

for(int i = 0; i < temp.size(); i++) 

temp.size() будет 0 при вызове в первый раз, вы действительно должны использовать values, но это приведет к IndexOutOfBoundsException

Итак, вы можете использовать что-то вроде ...

for (int i = 0; i < values.size(); i++) { 
    temp.add(values.get(i)); 
    temp.add(values.get(i)); 
} 

вместо

1

Сначала измените ваше для условия цикла от

for(int i = 0; i < temp.size(); i++) 

в

for(int i = 0; i < values.size(); i++) 

, а затем добавить значения в 2 раза каждый.

1

Ваш цикл в doubleIt() был зациклирован на неправильный размер списка. И вы пытались умножить строку на 2, вместо того, чтобы добавлять ее дважды.

public static List<String> doubleIt(List<String> values) 
{ 
    List<String> temp = new ArrayList<>(); 

    for(int i = 0; i < values.size(); i++) // <-- you needed to loop up to the size of the values list, not the temp list 
    { 
     temp.add(values.get(i)); 
     temp.add(values.get(i)); 
    } 
    return temp; 
} 
Смежные вопросы