Вызов 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 () в каждой строке перед каждым оператором возврата, однако я не включил его выше.

Ответы на вопрос(1)

Ваш ответ на вопрос