У меня есть текстовый файл со всеми номерами номеров в моей школе. Затем у меня есть код, который запрашивает номер комнаты ученика. kb - пользовательский входной сканер, а roomnos - сканер текстовых файлов. Это код:Проверка ошибки ввода пользователя с использованием текстового файла в Java
String room = null;
boolean invalid = true;
while(invalid)
{
System.out.println("What is the room number of your class?");
room = kb.nextLine();
while(roomnos.hasNext())
{
String roomno = roomnos.nextLine();
if(room.equals(roomno))
invalid = false;
}
if(invalid == true)
{
System.out.println("The room number you've given is invalid.");
}
}
Код действует, если номер первой комнаты указан пользователем. Однако, если пользователь вводит недопустимый номер комнаты, цикл не останавливается, то есть он говорит, что номер комнаты недействителен и запрашивает номер комнаты снова и снова, даже если номер комнаты действителен. Я думаю, что hasNext() во вложенном цикле while не перезапускается и не возвращается к началу файла и, следовательно, не может найти номер комнаты во время следующих циклов цикла while. Какова бы ни была проблема, как я могу это исправить?
Извините, я не совсем понимаю. По проверке вы имеете в виду оператор if, который проверяет логическое значение «invalid» и печатает, что номер комнаты недействителен? Потому что я думал, что он должен находиться за пределами внутреннего цикла while, чтобы цикл мог проходить через каждую строку текстового файла, прежде чем видеть, является ли номер комнаты недействительным. Кроме того, где именно я помещаю перерыв? Достаточно ли внутри внутренней петли? – Ranjani