Java Scanner строка не найдена, а затем Scanner закрыл ошибку?

У меня есть Java-код, который запрашивает ввод пользователя, а затем сохраняет эти данные в строковой переменной. Приведенная ниже функция является частью класса с именем number и вызывается в основной функции.

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

Часть основной функции выглядит так:

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

    }

Я использую одну и ту же функцию дважды, но передаю ей другой аргумент, чтобы различать присваивание ввода другой переменной, но при повторном запуске выдает ошибку «no line found».

Применяя некоторые другие советы, которые вы можете видеть закомментированными, я добавил проверку hasNextLine (), чтобы проверить, существует ли строка перед выполнением кода, но в результате возникает ошибка «Сканер закрыт», даже если я каждый раз вызываю новый экземпляр Scanner. время выполнения функции. Я также соответствующим образом закрыл сканер, чтобы минимизировать ошибки.

Я понятия не имею, что происходит не так, как я могу создать Scanner в основной функции и вызвать ".nextLine ()" столько раз, сколько требуется без ошибок, но при повторном вызове через метод класса я получаю эти ошибки.

Любая помощь приветствуется, спасибо заранее.

Ответы на вопрос(2)

Ваш ответ на вопрос