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.