呼唤偶数和奇数

时间:2013-04-18 16:03:31

标签: java

编写一个名为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),它给了我一个假而不是真。

2 个答案:

答案 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);
        }
    }