【发布时间】:2009-11-05 20:53:55
【问题描述】:
我必须创建一个具有 ArrayList 的方法;我需要从这个 ArrayList 中删除偶数。我已经为此编写了代码,但是有一个我无法识别的逻辑错误。
这是我的代码:
static void sortList(){
List <Integer> number=new ArrayList <Integer>();
number.add(11);
number.add(45);
number.add(12);
number.add(32);
number.add(36);
System.out.println("Unsorted List: "+number);
for (int i=0;i<number.size();i++){
int even=number.get(i)%2;
if (even==0){
System.out.println("This is Even Number:"+ number.get(i));
number.remove(i);
}
}
Collections.sort(number);
System.out.println("Sorted List: "+number);
}
代码的输出是:
Unsorted List: [11, 45, 12, 32, 36]
This is Even Number:12
This is Even Number:36
Sorted List: [11, 32, 45]
我想知道为什么 32 不是偶数,因为它是偶数,然后我在同一位置使用不同的偶数进行了测试,但结果是相同的。为什么在 index(3) 发生任何偶数都无法捕获。我真的很想知道为什么。所以请任何人都可以帮助我解决这个问题,还有其他更好的方法来实现这个解决方案。
谢谢
【问题讨论】:
-
您在迭代列表时正在更改列表。一个简单的解决方法是向后迭代列表。
标签: java collections arraylist