我的任务是创建一个方法,如果我的整数集中包含非偶数,则返回true。我的问题是,即使我的集合中有非偶数,它也会返回false。我在哪里犯了错误?
import java.util.*;
public class Chapter_11_E9
{
public static boolean odd;
public static boolean hasOdd(Set<Integer> tSet1)
{
Iterator<Integer> itr = tSet1.iterator();
while (itr.hasNext())
{
int current = itr.next();
if ((current / 2) == 1)
{
odd = true;
}
else
{
odd = false;
}
}
return odd;
}
public static void main(String[] args)
{
Set<Integer> tSet1 = new HashSet<Integer>();
tSet1.add(6);
tSet1.add(2);
tSet1.add(5);
tSet1.add(4);
tSet1.add(12);
tSet1.add(6);
tSet1.add(14);
System.out.println(tSet1);
System.out.println(hasOdd(tSet1));
}
}
答案 0 :(得分:2)
这一行:
if ((current / 2) == 1)
应该是:
if ((current % 2) == 1)
/
用于潜水,而%
用于获得余额。此外,您的方法逻辑已关闭。假设你在集合中有多个赔率和平均值,你可能会得到错误的结果。我建议这样做:
public static boolean hasOdd(Set<Integer> tSet1)
{
Iterator<Integer> itr = tSet1.iterator();
while (itr.hasNext())
{
int current = itr.next();
if ((current % 2) == 1)
{
//odd = true;
return true;//once you find the odd, just return
}
//else
//{
// odd = false;
//}
}
//return odd;
//if you're done iterating, that means it never found an odd so return false
return false;
}
一旦你在集合中发现了一个奇数,那么你的情况就是如此。一旦你完成整个集合的循环,那么你知道可能没有任何可能性,所以只返回false。
注意:提及用户 ZouZou 时,如果您想处理否定关键字,请使用:
current%2 != 0
答案 1 :(得分:0)
您需要在第一次获得奇数值时返回(如果最后一项是奇数,您将只返回true。)
public static boolean hasOdd(Set<Integer> tSet1)
{
Iterator<Integer> itr = tSet1.iterator();
while (itr.hasNext())
{
int current = itr.next();
if ((current % 2) != 0) // Check for odd, by computing the modulo 2 of the #.
{
return true; // stop, there is an odd value.
}
}
return false; // checked all the values... none are odd.
}
答案 2 :(得分:0)
我会在这里使用for-each循环
public static boolean hasOdd(Set<Integer> set) {
for (Integer current : set) {
// Check for odd, by computing the modulo 2 of the #.
if ((current % 2) != 0) {
// stop, there is an odd value.
return true;
}
}
// checked all the values... none are odd.
return false;
}