如何计算Java中多位数的奇数,平均数和零数

时间:2014-09-24 00:07:43

标签: java

我的程序不会将0视为偶数 而且我不想在循环时使用for语句 谢谢

import java.util。*;

公共课DigitAnalyst {

public static void main(String[] args) {
    int  zero=0;
    int lastdigit;

    Scanner inputNumber= new Scanner(System.in);
    System.out.println("enter any number: ");
    int number = inputNumber.nextInt();

    while(number > 0)
    {

         int zeros=0;
         int odds=0;
         int evens=0;

               while(number > 0)

                        {
                                 number=number/10;
                                 lastdigit=number%10;



                                 if (lastdigit==zero)
                                     zeros++;
                                 if (lastdigit % 2 == zero)
                                     evens++;
                                 if (lastdigit % 2 != zero)
                                     odds++;
                        }

               System.out.println(odds +" odd digits");
               System.out.println(evens +" even digits");
               System.out.println(zeros +" zero digits");
       }

}

}

3 个答案:

答案 0 :(得分:1)

根据您的代码,它会将0计为偶数,因为0 % 10 == 0

但我认为你的问题来自number=number/10;,它在进入循环时执行。

请尝试将此语句放在循环的末尾:

while (number > 0) {
    lastdigit = number % 10;
    // increment counters
    number = number / 10;
}

答案 1 :(得分:0)

我不清楚问题是什么,但我怀疑你只需要用else重新组织你的逻辑。而不是:

if (lastdigit==zero)
    zeros++;
if (lastdigit % 2 == zero)
    evens++;
if (lastdigit % 2 != zero)
    odds++;

使用它:

if (lastdigit==zero)
    zeros++;
else if (lastdigit % 2 == zero)
    evens++;
else
    odds++;

这样,如果lastdigitzero,则不会计为偶数或奇数(我猜是你想要的行为)。

答案 2 :(得分:0)

您需要做的只是代替三个if语句,将它们格式化为:

   if (lastdigit % 2 != zero){
       odds++;
   }
   if (lastdigit==zero) {
       zeros++;
   } else if (lastdigit % 2 == zero) {
       evens++;
   }