nextLine (), hasNextLine () и NoSuchElementException из класса Java-сканера - PullRequest
0 голосов
/ 13 февраля 2019

Если мы делаем консольный ввод с помощью сканера, у нас есть два способа записать цикл ввода

1.

    Scanner scanner = new Scanner(System.in);
    while (true) {
        System.out.println(scanner.nextLine());
    }

2.

    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNextLine()) {
        System.out.println(scanner.nextLine());
    }

Я считаю,Второй вариант более корректен еще и потому, что в hasNextLine () javadoc упоминается, что этот метод ожидает новой строки.Но почему первый тоже работает и ждет новой строки без NoSuchElementException?

1 Ответ

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

Ваше первое решение выдаст исключение, когда достигнут конец ввода (например, когда пользователь нажимает Ctrl+D в linux, или когда вы передаете файл на вход, и мы добираемся до конца файла),Второе решение выйдет изящно.

Если вы когда-либо используете только интерактивную командную строку и никогда не отправляете сигнал об окончании файла, разницы нет.

...