需要 while 循环的帮助才能使 print 语句正常工作

Need assistance with a while loop to make the print statement work

设计并实现一个确定并打印的应用程序 从键盘读取的 int 值中的偶数、奇数和零位数。

示例:

Enter a number: 100504575
The number: 100504575 has 3 zeros, 1 evens, and 5 odds.

所以代码是说输入一个数字,然后它会计算有多少偶数和零,然后它会再次打印那个数字并说出有多少偶数和零。计数部分工作我只是无法让 num 部分在此打印语句中工作。如果我输入数字 1384932,它应该打印出来:数字:1384932 有 0 个零、3 个偶数和 4 个赔率。 当前 它打印出:数字:0 有 0 个零、3 个偶数和 4 个奇数。

System.out.print("The number: " + num + " 有 " + 零 + " 个零," + even + " evens, " + "and " + odd + " odds.");

import java.util.Scanner;

public class CountDigits {

    public static void main(String[] args) {
        //Scanner scan = new Scanner(System.in);

        Scanner Scan = new Scanner(System.in);
        int even =0, odd = 0, zero = 0;
        System.out.print ("Enter a number: ");
        int num = Scan.nextInt();
        while(num > 0) {
            int digit = num % 10;
            num /= 10;
            if(digit == 0) {
            zero++;
            } else if(digit % 2 == 0) {
                even++;
            } else {
                odd++;
            }
        }
        System.out.print("The number: " + num + " has " + zero + " zeros, "
                + even + " evens, " + "and " + odd + " odds.");
        Scan.close();
    }
}

我编辑了您的代码以使用 String,这样您就可以输入任意数量的字符,而不必担心 int 限制。

我使用大小为 3int[] 来计算零、nums[0]、赔率、nums[1] 和偶数。 nums[2].

它获取输入的数字,去除所有空格,并使用 charAt() 解析 digit。然后检查。

让我们知道,这假设只输入整数,没有空格或字母或特殊字符。

public static void main(String[] args) {
    Scanner Scan = new Scanner(System.in);
    int[] nums = new int[3];
    System.out.print ("Enter a number: ");
    String num = Scan.nextLine();
    num = num.trim();
    for(int i = 0; i < num.length(); i++){
        int digit = Integer.parseInt("" + num.charAt(i));
        if(digit == 0){
            nums[0]++;
        }else if(digit % 2 == 0){
            nums[2]++;
        }else{
            nums[1]++;
        }
    }
    System.out.print("The number: " + num + " has " + nums[0] + " zeros, "

            + nums[2] + " evens, " + "and " + nums[1] + " odds.");
    Scan.close();
}

num 将是 0 因为这是停止循环的标记值。没问题,只需将输入复制到另一个将在 while 循环中使用的变量中。

int num = Scan.nextInt();
int looper = num;
while (looper > 0) { ... }

这样 num 保留了 Scanner 的值,另一个是在循环期间改变的值。当然,您还需要在 while 循环内将 num 的所有实例重构为 looper。你可以很容易地用 Replace All 做到这一点。