import java.util.*;
public class AddingIntegers{
public static void main(String []args){
ArrayList <Integer> list = new ArrayList<>(Arrays.asList(10,20,30));
add(list);
}
public static void add(ArrayList<Integer> list) {
for (int i = list.size() - 1; i >= 0; i--) {
if (i % 2 == 0) {
list.add(list.get(i));
} else {
list.add(0, list.get(i));
}
}
System.out.println(list);
}
}
预期产出:[20,10,20,30,30,10]
实际产量:[20,10,20,30,30,20]
所以我不明白为什么,对于最后一个索引,当i = 0时,在列表的末尾加上20,就我而言应该是10。
让我们看看每个循环会发生什么。开始:[10, 20, 30]
。
i % 2
是0
,因此索引2处的元素(30
)被附加到列表的末尾。该名单现在是[10, 20, 30, 30]
。i % 2
是1
,因此索引1处的元素(20
)被插入列表的开头。该名单现在是[20, 10, 20, 30, 30]
。请注意,20
现在位于列表的开头。i % 2
是0
,因此索引0处的元素(20
)被附加到列表的末尾。该名单现在是[20, 10, 20, 30, 30, 20]
。请注意,20
是附加的,而不是10
,因为10
不再位于列表的开头,20
是。