Просто интересно, как я могу завершить программу после завершения ввода входных данных? Поскольку сканирование все равно продолжится после нескольких "Enter", предполагая, что я продолжу вводить входные данные... Я попытался:
if (scan.nextLine() == null) System.exit(0);
и
if (scan.nextLine() == "") System.exit(0);
Они не сработали.... Программа продолжает работу и нарушает первоначальное намерение,
Переведено автоматически
Ответ 1
Проблема в том, что программа (подобная вашей) не знает, что пользователь завершил ввод данных, если только пользователь ... каким-либо образом ... сообщает ей об этом.
Пользователь может сделать это двумя способами:
Введите маркер "конец файла". В UNIX и Mac OS это (обычно) CTRL+D, а в Windows CTRL+Z. Это приведет к hasNextLine() возврату false.
Введите какой-нибудь специальный ввод, который распознается программой как означающий "Я закончил". Например, это может быть пустая строка или какое-нибудь специальное значение, например "exit". Программе необходимо протестировать именно это.
(Вы также могли бы использовать таймер и предположить, что пользователь закончил, если он не вводит никаких данных в течение N секунд или N минут. Но это не самый удобный способ, и во многих случаях это было бы опасно.)
Причина сбоя вашей текущей версии заключается в том, что вы используете == для проверки наличия пустой строки. Вам следует использовать методы equals или isEmpty. (См. Как мне сравнивать строки в Java?)
Другие вещи, которые следует учитывать, - это чувствительность к регистру (например, "exit" против "Выхода") и влияние начальных или завершающих пробелов (например, "exit" против "выхода").
Ответ 2
Сравнение строк выполняется с помощью .equals(), а не ==.
Итак, попробуйте scan.nextLine().equals("").
Ответ 3
Вам придется искать конкретный шаблон, который указывает на конец вашего ввода, скажем, например, "# #"
// TODO Auto-generated method stub Scannerscan=newScanner(System.in); try { while (scan.hasNextLine()){
Stringline= scan.nextLine().toLowerCase(); System.out.println(line); if (line.equals("##")) { System.exit(0); scan.close(); } }
} finally { if (scan != null) scan.close(); }
Ответ 4
В этом случае я рекомендую вам использовать цикл do, while вместо while .
Для выхода из программы вам просто нужно назначить заголовок строки, например exit . Если значение input равно exit, то программа завершится. Кроме того, пользователи могут нажать control + c для выхода из программы.