Java Scanner nenhuma linha encontrada e, em seguida, o Scanner fechou o erro?
Eu tenho um código Java que solicita a entrada do usuário e, em seguida, armazena esses dados em uma variável de seqüência de caracteres. A função abaixo faz parte de uma classe chamada 'número' e é chamada na função principal.
public static void setVal(int i){
Scanner readIn = new Scanner(System.in);
//while (readIn.hasNextLine()){
str = readIn.nextLine();
numCheck = false;
if (i == 1){
while (!numCheck){
if (str.contains(" ")){
System.out.println("Please input a single item.");
str = readIn.nextLine();
}
else if (!isNumeric(str)){
System.out.println("Please input a valid number.");
str = readIn.nextLine();
}
else {
numCheck = true;
value = Double.parseDouble(str);
readIn.close();
}
}
readIn.close();
}
else if (i == 2){
while (!numCheck){
if (str.contains(" ")){
System.out.println("Please input a single item.");
str = readIn.nextLine();
}
else if (!isNumeric(str)){
System.out.println("Please input a valid number.");
str = readIn.nextLine();
}
else {
numCheck = true;
secondV = Double.parseDouble(str);
readIn.close();
}
}
readIn.close();
}
else {
System.out.println("An error has occurred.");
}
// }
readIn.close();
}
Parte da função principal se parece com isso:
number input = new number();
for (int i = 1; i <= 2; i++){
input.setVal(i);
System.out.println("Now please input a second value for computing with the first.");
input.setVal(i);
}
Eu uso a mesma função duas vezes, mas entregando a ele um argumento diferente para distinguir a atribuição da entrada para uma variável diferente, mas quando é executada uma segunda vez, gera um erro sem linha encontrada.
Aplicando outras dicas que você pode ver comentadas, adicionei uma verificação 'hasNextLine ()' para verificar se a linha existe antes de executar o código, mas isso acaba com o erro 'Scanner fechado', mesmo que eu invoque uma nova instância do Scanner a cada tempo em que a função é executada. Também fechei o scanner adequadamente para garantir a minimização de erros.
Não tenho ideia do que está errado, pois posso criar um Scanner na função principal e chamar '.nextLine ()' quantas vezes for necessário, sem erros, mas quando chamado novamente por meio de um método de classe, recebo esses erros.
Qualquer ajuda é apreciada, obrigado antecipadamente.