После использования метода scanner.close () я не могу открыть другой сканер. Я искал свой вопрос в Google, чтобы найти людей, которые предлагают решение для обходного пути. Я просто хочу понять, почему это проблема в первую очередь. Может кто-нибудь объяснить, почему?
import java.util.Scanner;
public class Main {
public static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
scan.close();
Scanner scan = new Scanner(System.in);
System.out.println(scan.next()); //NoSuchElementException
}
}
Я понимаю, что одновременное открытие нескольких сканеров может привести к ошибке outOfMemoryError, поэтому я подумал, почему бы не использовать ее как одноэлементный служебный класс, из которого можно вызывать методы? Этот класс будет открывать и закрывать сканер при каждом использовании, так что потоки не должны оставаться открытыми.
public class Main {
public static void main(String[] args) {
LinkedList<Scanner> list = new LinkedList<>();
while(true) {
list.add(new Scanner(System.in)); //OutOfMemoryError
}
}
}
, что возвращает нас к корню моего вопроса, если мы все сможем понять, почему работает класс сканераТаким образом, возможно, мы могли бы найти решение?