从一个ArrayList删除偶数 [英] Remove even numbers from an ArrayList
问题描述
我要创建有一个ArrayList的方法;我需要从此ArrayList删除偶数。我已经写了code表示,但有一个逻辑错误,我无法确定。
I have to create a method which has an ArrayList; I need to remove even numbers from this ArrayList. I have written code for that but there is a logical error which I couldn't identify.
下面是我的code:
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);
}
在code的输出是:
The output of the code is:
Unsorted List: [11, 45, 12, 32, 36]
This is Even Number:12
This is Even Number:36
Sorted List: [11, 32, 45]
我想知道这是为什么32没有被捕获为偶数,因为它是一个偶数,然后我通过测试在同一位置使用不同的连号,但结果是一样的。为什么在索引(3)它的发生,任何偶数不可能是赶上。我真的不知道为什么。所以请任何一个可以帮助我,这和有没有其他来实施该解决方案更好的办法。
I am wondering that why 32 is not caught as an Even number as it is an even number, I tested then by using different even numbers at same position but the result is same. Why at index(3) its happening that any even number couldnt be catch. I am really wondering why. So please any one can help me out for this and is there any other better way to implement this solution.
感谢
推荐答案
使用的 的Iterator
。它拥有你需要一个删除()
方法。
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(11);
numbers.add(45);
numbers.add(12);
numbers.add(32);
numbers.add(36);
System.out.println("Unsorted List: " + numbers);
for (Iterator<Integer> iterator = numbers.iterator(); iterator.hasNext();) {
Integer number = iterator.next();
if (number % 2 == 0) {
System.out.println("This is Even Number: " + number);
iterator.remove();
}
}
Collections.sort(numbers);
System.out.println("Sorted List: " + numbers);
这篇关于从一个ArrayList删除偶数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!