2

我的代码有什么问题?我正在尝试查找该集合是否包含任何奇数

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;
        }
    }
}
4

3 回答 3

7

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

通过使用 foreach 循环,它也会更加简洁和易读:

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

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

于 2012-07-28T09:05:14.177 回答
1

您的方法只是检查集合的第一个元素并判断它是否为奇数。但是,您应该确保仅在找到第一个奇数时才退出循环。

于 2012-07-28T09:11:13.207 回答
0

或者你可以这样尝试

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

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

于 2012-07-28T09:27:00.503 回答