Chamar Scanner.close () lança exceção nosuchelement

Eu tenho um método simples que imprime um comando para a tela, digitalizar é uma entrada do usuário e retorna como uma seqüência de caracteres. Se a entrada do usuário for inválida, ele notifica o usuário e pergunta novamente. Esse método funcionou perfeitamente, mas meu instrutor mencionou que devemos sempre fechar recursos, então voltei e adicionei o método close e agora estou recebendo um NoSuchElementException toda vez que o método é chamado, independentemente da entrada do usuário. Aqui está o 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;
    }
}

As exceções sempre apontam de volta para a linha em que userinput é iniciada como scan.nextLine (). Trim () NOTE * Eu adicionei scan.close () em cada linha antes de cada instrução de retorno, no entanto, não a incluí acima.