“iterator.next()%2”有什么问题?

时间:2012-07-28 09:01:43

标签: java iterator set

我的代码有什么问题?我试图找出该集合是否包含任何奇数

public static boolean hasOdd (Set<Integer> set) {
    Iterator iterator;
    iterator = set.iterator();

    while (iterator.hasNext()) {
        if(iterator.next()%2 != 0) {
            return true;
        } else {
            return false;
        }
    }
}

3 个答案:

答案 0 :(得分:7)

问题是它只检查迭代器的第一个元素。如果当前元素是偶数,则不应返回,而是转到下一个元素。另一个问题是,如果您希望自动取消装箱工作,则应使用Iterator<Integer>,而不仅仅是原始Iterator

使用foreach循环也会更简洁和可读:

for (Integer i : set) {
    ...
}

这看起来像是家庭作业,或者至少是你自己可以弄明白的东西,所以我不会给你解决方案,只有上面的提示。

答案 1 :(得分:1)

你的方法只是检查集合的第一个元素,并告诉它是否是奇数。但是,只有在找到第一个奇数时,才应确保从循环中断。

答案 2 :(得分:0)

或者您可以尝试这样

Iterator<Integer> iterator = set.iterator();

并且不要在循环中使用else,而false语句应该是方法的最后一个语句