![](/img/trans.png)
[英]How can I count the number of odd, evens, and zeros in a multiple digit number in 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.