我的程序不会将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");
}
}
}
答案 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++;
这样,如果lastdigit
为zero
,则不会计为偶数或奇数(我猜是你想要的行为)。
答案 2 :(得分:0)
您需要做的只是代替三个if语句,将它们格式化为:
if (lastdigit % 2 != zero){
odds++;
}
if (lastdigit==zero) {
zeros++;
} else if (lastdigit % 2 == zero) {
evens++;
}