设计并实现确定和打印的应用程序 从键盘读取的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();
}
}
答案 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()