Выполняю следующий код:
package ru.itsjava.algorythmes;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int a = reader();
int b = reader();
}
public static int reader(){
System.out.print("Enter the number: ");
Scanner scan = new Scanner(System.in);
int value = scan.nextInt();
scan.close();
return value;
}
}
Во время выполнения он читает клавиатуру и присваивает первой переменной значение. Но при повторном вызове reader() происходит ошибка. При этом исключение NoSuchElementException не передаёт сообщений (нет двоеточия с каким-то комментарием). По-идее переменная scan должна существовать только внутри reader() и исчезать после завершения метода. Так что для меня не совсем очевидно почему при повторном вызове метода происходит исключение. Помогите пожалуйста разобраться. Просто интересно что происходит именно в таком случае.
@Red Circle, для меня тоже странно, но в вашем случае именно scan.close(); является причиной исключения. Закомментируйте и все работает нормально. Я могу вам предложить проверенный в работе и удобный метод получения целых чисел в заданном диапазоне из консоли:
public static int readerIntFromInterval(int a, int b) {
Scanner scan = new Scanner(System.in);
int userInput;
while (true) {
System.out.print("Введите целое "
+ "число в диапазоне [" + a + " .. " + b + "]: ");
if (scan.hasNextInt()) {
userInput = scan.nextInt();
if (userInput >= a && userInput <= b) break;
else
System.out.println("Не соответствует условиям ввода! ");
} else {
System.out.println("Не соответствует условиям ввода! ");
scan.nextLine();
}
}
scan.close();
System.out.println("Введено число: " + userInput);
return userInput;
}
И хотя здесь тоже присутствует scan.close(), но код работает исправно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
есть строка "kldm" и в ней нужно проверить, есть ли буквы из "l,p,o,k,j,s,h,r", думаю реализоватьcontains, но как сделать, чтобы он не 1 букву искал, и не слово,...
Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала...
Необходимо реализовать метод, который будет рассчитывать среднюю зарплату среди всех сотрудников; выводить список подразделений и среднюю...
Мой вопрос написал ниже в комментах программы с достаточно подробным описанием причины возникновения собственно самого вопроса