У меня нет всего вашего исходного кода, но кажется, что вы вызываете close()
на сканере в цикле while.
Работает следующий фрагмент:
while (true) {
Scanner user = new Scanner(System.in);
System.out.println(". What would you like to do?");
System.out.println("Games Feed Walk Status");
String userInput = user.next();
System.out.println(userInput);
}
Правильный запрос:
. What would you like to do?
Games Feed Walk Status
test1
test1
. What would you like to do?
Games Feed Walk Status
test2
test2
Однако добавление вызова close()
на сканере в цикле воссоздает исключение, которое вы описываете.
while (true) {
Scanner user = new Scanner(System.in);
System.out.println(". What would you like to do?");
System.out.println("Games Feed Walk Status");
String userInput = user.next();
System.out.println(userInput);
user.close(); // The offending line!
}
}
Games Feed Walk Status
test1
test1
. What would you like to do?
Games Feed Walk Status
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Test.main(Test.java:11)
Закрытие сканера также будеточистите основной поток и верните его обратно в ОС, а затем сочтите его бесполезным до конца жизненного цикла приложения.Если вам необходимо повторно использовать сканер, вы должны закрыть его тогда и только тогда, когда с ним покончено.