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.

questionAnswers(2)

yourAnswerToTheQuestion