Al llamar a Scanner.close () se produce la excepción Nosuchelement

Tengo un método simple que imprime un comando en la pantalla, analiza la entrada de un usuario y lo devuelve como una cadena. Si la entrada del usuario no es válida, notifica al usuario y pregunta nuevamente. Este método funcionó a la perfección, pero mi instructor mencionó que siempre deberíamos cerrar los recursos, así que volví y agregué el método de cierre y ahora recibo una NoSuchElementException cada vez que se llama al método, independientemente de la información del usuario. Aquí está el código ...

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

Las excepciones siempre apuntan a la línea donde el ingreso de usuario se inicia como scan.nextLine (). Trim () NOTA * Agregué scan.close () en cada línea antes de cada declaración de devolución, sin embargo, no lo incluí arriba.

Respuestas a la pregunta(1)

Su respuesta a la pregunta