Wywołanie Scanner.close () zgłasza wyjątek nosuchelement

Mam prostą metodę, która drukuje polecenie na ekranie, skanuje dane wejściowe użytkownika i zwraca je jako ciąg znaków. Jeśli dane wejściowe użytkownika są nieprawidłowe, powiadamia użytkownika i prosi ponownie. Ta metoda działała doskonale, ale mój instruktor wspomniał, że zawsze powinniśmy zamykać zasoby, więc wróciłem i dodałem metodę close, a teraz otrzymuję wyjątek NoSuchElementException za każdym razem, gdy wywoływana jest metoda, niezależnie od danych wprowadzanych przez użytkownika. Oto kod ...

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;
    }
}

Wyjątki zawsze wskazują z powrotem na linię, w której wprowadzono userinput jako scan.nextLine (). Trim () UWAGA * Dodałem scan.close () w każdym wierszu przed każdą instrukcją powrotu, jednak nie uwzględniłem tego powyżej.

questionAnswers(1)

yourAnswerToTheQuestion