Как выйти из цикла while после приема всех входов? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть цикл 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?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

В операторе 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");
0 голосов
/ 21 февраля 2019

Вы можете выйти из цикла с помощью оператора break:

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

(Кстати, не закрывайте stdout, stderr или stdin, то есть в Java: System.out, System.err иSystem.in)

...