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

时间:2016-10-21 02:03:25

标签: java while-loop println

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

示例:

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

所以代码说要输入一个数字,然后它会计算多少个均衡零和零,然后它会再次打印这个数字并说明有多少个均衡零和零。计数部分工作,我只是不能让num部分在这个print语句中工作。如果我输入数字1384932,它应该打印出来:数字: 1384932 有0个零,3个均衡和4个赔率。 目前它打印出来:数字: 0 有0个零,3个均衡和4个赔率。

System.out.print("数字:" + num +"有" + 0 +"零,&# 34;         +偶数+" evens," +"和" +奇数+"赔率"。);

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();
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

这种方式num保留了Scanner所采用的值,另一种是循环期间改变的值。当然,您还需要在num循环内重构looper的所有while实例。您可以非常轻松地使用Replace All

答案 1 :(得分:0)

我修改了您的代码以使用String,这样您就可以输入任意数量的字符,而无需担心int限制。

我使用大小为int[]的{​​{1}}来计算零,3,赔率,nums[0]和平均值。 nums[1]

输入数字,删除任何空格,然后使用nums[2]解析digit。然后检查。

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

charAt()