编写一个名为hasAnOddDigit的方法,该方法返回正整数的任何数字是否为奇数。如果数字至少有一个奇数,则您的方法应该返回true,如果它的数字都不是奇数,则返回false。 0,2,4,6和8是偶数位,1,3,5,7,9是奇数位。
例如,以下是对您的方法的一些调用及其预期结果:
退回致电价值 hasAnOddDigit(4822116)是的 hasAnOddDigit(2448)false hasAnOddDigit(-7004)是的 您不应该使用String来解决此问题。
这是我对这个问题的尝试:
public boolean hasAnOddDigit(int num){
int number=0;
while (number > 0) {
number= number % 10;
number = number / 10;
}
if(number%2==0 && num%2==0){
return false;
}else{
return true;
}
}
调用hasAnOddDigit(4822116),它给了我一个假而不是真。
答案 0 :(得分:2)
你的方法应该在循环中检查每个数字,而不是在做出决定之前等待循环完成。目前,while
循环将number
向下运行为零,然后才尝试检查该值。当然,在循环结束时,两个值都为零,因此返回值为false
。
public boolean hasAnOddDigit(int num){
// You do not need to make a copy of num, because
// of pass-by-value semantic: since num is a copy,
// you can change it inside the method as you see fit.
while (num > 0) {
int digit = num % 10;
if (digit % 2 == 1) return true;
num /= 10;
}
// If we made it through the loop without hitting an odd digit,
// all digits must be even
return false;
}
答案 1 :(得分:0)
递归版本,对某些人来说可能更直观。
private boolean hasAnOddDigit(int num) {
if (num<10) {
return num%2==0 ? false : true;
} else {
return check(num%10) || check (num/10);
}
}