簡體   English   中英

如何在Java中計算多位數的奇數,偶數和零的數量

[英]how can I count the number of odd, evens, and zeros in a multiple digit number in Java

我的程序沒有將0算作偶數,並且我不想在循環時使用for語句,謝謝

導入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");
       }

}

}

根據您的代碼,因為0 % 10 == 0 ,所以它會將0算作偶數。

但是我認為您的問題來自number=number/10; 進入循環時執行。

嘗試將以下語句放在循環的末尾:

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

我不清楚問題是什么,但我懷疑您只是需要與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++;

這樣,如果lastdigit zero ,則不會將其計為偶數或奇數(我猜這是您想要的行為)。

您需要做的就是代替三個if語句,將它們格式化為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM