Loop不会终止Java

时间:2013-10-08 22:18:34

标签: java while-loop

我是初学程序员,如果这个问题的答案是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();
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您永远不会在number循环中更改while,因此即使您输入-1number也不会更改为-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. 向用户询问一个号码并解析它
  2. 计算正(非零)整数
  3. 中的位数的数学计算
  4. 向用户打印数字和数字
  5. 如果用户输入-1停止
  6. 代码:

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