Ошибка при повторном вызове статического метода
Объясните, пожалуйста, почему возникает ошибка?
Exception in thread "main" java.io.IOException: Stream closed
Первый раз считывает. Во второй раз ошибка всплывает. Я так подозреваю, что это как-то связано с тем, что метод static. Но почему конкретно ошибка возникает понять не могу. Когда метод повторно вызывается поток создаётся повторно.
Если метод вызывается один раз - всё работает хорошо.
public class MainClass {
public static void main(String[] args) throws IOException {
int x = readNumberFromConsole();
int y = readNumberFromConsole();
}
private static int readNumberFromConsole() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
reader.close();
return Integer.parseInt(s);
}
}
Ответы (1 шт):
Автор решения: Sergey Gornostaev
→ Ссылка
reader.close() закрывает все низлежащие потоки, включая System.in. Попытка чтения из закрытого потока вызывает исключение.