需要 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
限制。
我使用大小为 3
的 int[]
来计算零、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
做到这一点。
设计并实现一个确定并打印的应用程序 从键盘读取的 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
限制。
我使用大小为 3
的 int[]
来计算零、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
做到这一点。