gpt4 book ai didi

java - 从 ArrayList 中删除偶数

转载 作者:行者123 更新时间:2023-11-29 09:34:52 24 4
gpt4 key购买 nike

我必须创建一个具有 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) 处发生无法捕获任何偶数的情况。我真的很想知道为什么。所以请任何人帮助我解决这个问题,还有其他更好的方法来实现这个解决方案。

谢谢

最佳答案

当您从列表中删除某些内容时,之后所有内容的索引都会发生变化!

具体来说,在您的实现中,32 没有被删除,因为它紧跟在另一个偶数之后。

我会使用 Iterator 来遍历列表,然后在该迭代器上执行删除操作,如下所示:

for(Iterator i = number.iterator(); i.hasNext(); ) {
if (isEven(i.next()) {
i.remove();
}
}

关于java - 从 ArrayList 中删除偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com