Вызов Scanner.close () вызывает исключение nosuchelement
У меня есть простой метод, который выводит команду на экран, сканирует ввод пользователя и возвращает ее в виде строки. Если ввод пользователя неверен, он уведомляет об этом пользователя и снова запрашивает. Этот метод работал отлично, но мой инструктор упомянул, что мы всегда должны закрывать ресурсы, поэтому я вернулся и добавил в метод close, и теперь я получаю исключение NoSuchElementException каждый раз, когда вызывается метод, независимо от пользовательского ввода. Вот код ...
private String getUserString(String userCommand) {
System.out.println(userCommand);
Scanner scan = new Scanner(System.in);
String userinput = scan.nextLine().trim();
if (userinput.isEmpty()){
System.out.println("Invalid choice");
return getUserString(userCommand);
}
else {
return userinput;
}
}
Исключения всегда указывают на строку, где пользовательский ввод инициируется как scan.nextLine (). Trim (). ПРИМЕЧАНИЕ * Я добавил scan.close () в каждой строке перед каждым оператором возврата, однако я не включил его выше.