Как прервать цикл while при вводе с помощью сканирования nextline - PullRequest
0 голосов
/ 29 марта 2019

Я хочу что-то ввести путем сканирования следующей строки в цикле и при некоторых условиях прерывать цикл. Но я обнаружил, что не могу вырваться и все еще в этом цикле.

public class test{
    public static void main(String args[]){
        Scanner scan=new Scanner(System.in);
        String line;
        int count=1;
        while (true){
            line=scan.nextLine();
            if (line.equals(" ")){
                break;
            }
            System.out.println(line);
            System.out.println(count);
            count=count+1;
        }
    }
}

То, что ожидается, выглядит так:

apple
soda

и затем пробел

И результат будет:

apple
1
soda
2

и разорвать и завершить программу

Но на самом деле цикл продолжается до тех пор, пока я не закончу терминал.

Ответы [ 2 ]

1 голос
/ 29 марта 2019

break должно работать, но если нет, вы можете попробовать что-то вроде этого:

Scanner scan=new Scanner(System.in);
String line;
int count=1;
boolean docontinue = true;
while (docontinue){
    line=scan.nextLine();
    if (line.equals(" ")){
        docontinue = false;
        System.out.println("break");
    }
    System.out.println(line);
    System.out.println(count);
    count=count+1;
}

Если разрывная печать не работает, это потому, что оператор if тоже не работает.

  • Если вы вводите пробел перед нажатием Enter, вам следует сравнить строку с " ".
  • Если вы нажмете только Enter, чтобы закончить цикл, вам следует сравнить строку на пустую строку "". Действительно, nextLine () возвращает строку без EOL char. Таким образом, если вы нажмете Enter, строка будет пустой с EOL char.

Лучший

0 голосов
/ 29 марта 2019

Вам нужно использовать метод equals для сравнения вашей строки с empty space

if (line.equals(" ")){
    break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...