接收所有输入后如何跳出while循环?

时间:2019-02-21 16:07:51

标签: java while-loop infinite

我有一个while循环,它检测sc.hasNext()是否为true,并接受输入的列表,并将其一一添加到列表textEditor中。

         while (sc.hasNext()) {
            String line = sc.nextLine();
            if (!(line.isEmpty())){
                textEditor.addString(line);
            }
        }
        sc.close();
        textEditor.printAll();
    }
}

但是,当我输入字符串列表时,例如

oneword
two words
Hello World
hello World

循环不会停止,不会调用方法printAll()。我该如何退出while循环?

2 个答案:

答案 0 :(得分:1)

break语句中没有while,因此您将陷入无限循环。

我用简单的System.out.println修改了您的示例。看一下新的while条件,当接收到空String时,它将退出while语句:

Scanner sc = new Scanner(System.in);
String line;
while (!(line = sc.nextLine()).isEmpty()) {
    System.out.println("Received line : " + line);
    //textEditor.addString(line);
}
sc.close();

System.out.println("The end");

答案 1 :(得分:0)

您可以使用break语句摆脱循环:

    while (sc.hasNextLine()) {
        String line = sc.nextLine();
        if (!(line.isEmpty())){
            textEditor.addString(line);
        } else {
            break;
        }
    }
    textEditor.printAll();

(顺便说一句,不要关闭Java中的stdout,stderr或stdin:System.out,System.err和System.in)