我将字符串"Hello"
,"Cat"
,"Dog"
添加到名为values
的arraylist中,将其传递给方法doubleIt()
,该方法应返回所有内容的列表,即
"Hello", "Hello", "Cat", "Cat", "Dog", "Dog"
但我得到的只是[]
。我在这里做错了什么?
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 :(得分: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 :(得分:1)
首先从
更改for循环条件for(int i = 0; i < temp.size(); i++)
到
for(int i = 0; i < values.size(); i++)
然后再添加2次值。
答案 2 :(得分:1)
doubleIt()
中的for循环循环到错误的列表大小。而你试图将一个字符串乘以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;
}