Как сделать так, чтобы моя программа не запрашивала ввод дважды? ⇐ JAVA
-
Anonymous
Как сделать так, чтобы моя программа не запрашивала ввод дважды?
Я использую класс Scanner в Java и столкнулся с проблемой, из-за которой моя программа делала что-то вроде этого:
public static void ответ() { System.out.print("\t> "); команда = scan.nextLine(); // Он должен иметь возможность читать всю строку, чтобы иметь возможность захватывать пробелы } public static void main(String[] args) { while (!command.contains("Привет, мир!")) { System.out.println("Привет!!"); отвечать(); } } Но напечатал бы это:
Привет!! > Привет!! (ввод пользователя) Итак, после некоторых исследований я решил изменить свою программу примерно так:
public static void ответ() { сканирование.следующаястрока(); // новый кусок System.out.print("\t> "); команда = scan.nextLine(); } public static void main(String[] args) { while (!command.contains("Привет, мир!")) { System.out.println("Привет!!"); отвечать(); } } Это привело к другой проблеме. Если пользователь испортит ввод, набрав что-то вроде «fjbejwkb» вместо «Hello World!», произойдет следующее:
Привет!! > fjbejwkb (пользователь вводит неверную информацию) Привет!! (ввод пользователя) > (ввод пользователя) Если я избавлюсь от добавленного scan.nextLine(), я вернусь к исходной проблеме «Привет!!» печатается дважды, но если я оставлю его, всякий раз, когда я использую метод answer() после его первого использования, он заставит пользователя ввести две вещи. Хотя первое не прочитано, я уверен, что это может привести к некоторой путанице, которой мне бы хотелось избежать.
Я пробовал использовать println / \n вместо scan.nextLine(), но визуально это мне не нравится:
р>
Привет!! > (ввод пользователя) Я также пробовал command = scan.next() вместо command = scan.nextLine(), но это не фиксирует пробелы - в этом и заключается проблема работаю над тем, что мне нужно.
Вот чего я хочу:
Привет!! > fjbejwkb (пользователь вводит неверную информацию) Привет!! > (ввод пользователя) Когда пользователь вводит неправильные данные, он должен запросить ввод один раз, а затем запросить ввод еще раз.
Я использую класс Scanner в Java и столкнулся с проблемой, из-за которой моя программа делала что-то вроде этого:
public static void ответ() { System.out.print("\t> "); команда = scan.nextLine(); // Он должен иметь возможность читать всю строку, чтобы иметь возможность захватывать пробелы } public static void main(String[] args) { while (!command.contains("Привет, мир!")) { System.out.println("Привет!!"); отвечать(); } } Но напечатал бы это:
Привет!! > Привет!! (ввод пользователя) Итак, после некоторых исследований я решил изменить свою программу примерно так:
public static void ответ() { сканирование.следующаястрока(); // новый кусок System.out.print("\t> "); команда = scan.nextLine(); } public static void main(String[] args) { while (!command.contains("Привет, мир!")) { System.out.println("Привет!!"); отвечать(); } } Это привело к другой проблеме. Если пользователь испортит ввод, набрав что-то вроде «fjbejwkb» вместо «Hello World!», произойдет следующее:
Привет!! > fjbejwkb (пользователь вводит неверную информацию) Привет!! (ввод пользователя) > (ввод пользователя) Если я избавлюсь от добавленного scan.nextLine(), я вернусь к исходной проблеме «Привет!!» печатается дважды, но если я оставлю его, всякий раз, когда я использую метод answer() после его первого использования, он заставит пользователя ввести две вещи. Хотя первое не прочитано, я уверен, что это может привести к некоторой путанице, которой мне бы хотелось избежать.
Я пробовал использовать println / \n вместо scan.nextLine(), но визуально это мне не нравится:
р>
Привет!! > (ввод пользователя) Я также пробовал command = scan.next() вместо command = scan.nextLine(), но это не фиксирует пробелы - в этом и заключается проблема работаю над тем, что мне нужно.
Вот чего я хочу:
Привет!! > fjbejwkb (пользователь вводит неверную информацию) Привет!! > (ввод пользователя) Когда пользователь вводит неправильные данные, он должен запросить ввод один раз, а затем запросить ввод еще раз.
Мобильная версия