我的代码有什么问题?我试图找出该集合是否包含任何奇数
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;
}
}
}
答案 0 :(得分:7)
问题是它只检查迭代器的第一个元素。如果当前元素是偶数,则不应返回,而是转到下一个元素。另一个问题是,如果您希望自动取消装箱工作,则应使用Iterator<Integer>
,而不仅仅是原始Iterator
。
使用foreach循环也会更简洁和可读:
for (Integer i : set) {
...
}
这看起来像是家庭作业,或者至少是你自己可以弄明白的东西,所以我不会给你解决方案,只有上面的提示。
答案 1 :(得分:1)
你的方法只是检查集合的第一个元素,并告诉它是否是奇数。但是,只有在找到第一个奇数时,才应确保从循环中断。
答案 2 :(得分:0)
或者您可以尝试这样
Iterator<Integer> iterator = set.iterator();
并且不要在循环中使用else,而false语句应该是方法的最后一个语句