我是初学程序员,如果这个问题的答案是obvoius,请提前道歉! 我正在尝试创建一个简单的程序,重复计算不同整数中的位数,如果我输入-1则结束,但是当我输入-1时,它计算整数中的数字并且不会停止。我一直在尝试不同的循环,但我似乎总是遇到类似的问题所以任何帮助都会受到赞赏!
import java.util.Scanner;
public class NumberCount {
public static void main (String [] args) {
Scanner input = new Scanner (System.in);
System.out.print("Enter Number: ");
String num = input.nextLine();
int number = Integer.parseInt(num);
if (number == -1) {
System.out.print("Program Terminated. . .");
}
while (number != -1) {
System.out.println("Number of digits in " + num + " is " + num.length());
System.out.print("Enter Number: ");
num = input.nextLine();
num.length();
}
}
}
答案 0 :(得分:1)
您永远不会在number
循环中更改while
,因此即使您输入-1
,number
也不会更改为-1
。将num
解析为int
,并在number
循环内调用nextLine()
后将其分配给while
。
此外,在while
循环内单独调用此行不会执行任何操作。
num.length();
它评估num
String
的长度,但未分配给任何内容。它可以删除。
答案 1 :(得分:1)
将'num'的所有实例更改为'number'。您在while循环中定义变量'num',但使用变量'number'来比较-1。因为唯一被改变的变量是'num',所以while循环不会破坏,除非在while循环之前'number'被声明为-1。
答案 2 :(得分:0)
其他人已经解释了这个问题,所以我只提供了一个最小的解决方案。我使用Console
而不是Scanner
,因为它使用起来稍微好一点。 do-while
循环的工作原理如下:
-1
停止代码:
import java.io.Console;
public class CountNumbers {
public static void main(String[] args) {
Console console = System.console();
int number;
do {
number = Integer.parseInt(console.readLine("Enter number: "));
int numDigits = (int) (Math.log10(number) + 1);
console.format("Number of digits in %d is %d\n", number, numDigits);
} while (number != -1);
}
}