1

我是一个初学者程序员,所以如果这个问题的答案很明显,请提前道歉!我正在尝试创建一个简单的程序,该程序重复计算不同整数中的位数并在我输入-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();
        }
    }
}
4

3 回答 3

1

将“num”的所有实例更改为“number”。您在 while 循环中定义变量“num”,但使用变量“number”与 -1 进行比较。由于唯一被更改的变量是“num”,因此除非在 while 循环之前将“number”声明为 -1,否则 while 循环将永远不会中断。

于 2013-10-08T22:33:03.340 回答
1

您永远不会numberwhile循环内更改,因此即使您输入-1,number也不会更改为-1. 解析num为 anint并将其分配给循环内部的number调用之后。nextLine()while

while此外,在循环内对一行本身的调用什么也不做。

num.length();

它评估 的长度num String,但它没有分配给任何东西。它可以被删除。

于 2013-10-08T22:20:36.323 回答
0

其他人已经解释了这个问题,所以我只提供了一个最小的解决方案。我使用 aConsole而不是 aScanner因为它使用起来稍微好一些。循环的do-while工作方式如下:

  1. 向用户询问一个数字并解析它
  2. 计算正(非零)整数中位数的好数学
  3. 打印出数字和数字给用户
  4. 如果用户输入-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);
    }
}
于 2013-10-08T23:05:28.553 回答