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

How to break out of while loop after taking in all the inputs?

我有一个 while 循环,它检测 sc.hasNext() 是否为真并接收输入的输入列表,将其一一添加到列表 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 循环?

您可以使用 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)

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

我用一个简单的 System.out.println 改编了你的例子。看一下新的 while 条件,它会在收到空字符串时退出 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");