扫描仪是一个流,所以当程序终止流被自动关闭你的,但它是不好的做法,无法靠近溪流,因为在较大较长的运行程序,他们可能会出现问题,所以是一切正确关闭,但如早些时候说这是不好的做法。
如果你必须在同一时间将OutOfMemoryError而崩溃开放的许多河流,这里是这个
public static void main(String[] args) {
LinkedList<Scanner> list = new LinkedList<>();
while(true)
list.add(new Scanner(System.in));
}
一个例子,所以如果你没有时间长了会导致此内存错误后关闭您的流也请注意,这个错误不会造成因为在列表项太多是因为流
编辑:
public static void main(String[] args) {
Scanner first = new Scanner(System.in);
Scanner second = new Scanner(System.in);
int x = first.nextInt();
int y = second.nextInt();
System.out.println("First scan returns: " + x);
System.out.println("Second scan returns: " + y);
first.close();
second.close();
}
,你可以看到您可以打开多个System.in扫描程序,但是当读入变量时,您必须指定要使用的扫描仪对象。然而,当然这是毫无意义的,我不能想出为什么你需要一次打开多个System.in扫描器的任何原因。
因此,扫描仪打开的所有文件都将在system.exit()处关闭。 您可以举一个可选问题的例子,可以在较大的程序中发生吗? – Mickey
@Mickey是的,打开的所有文件和流都将像关闭方法一样关闭,现在大型程序中可能发生的问题将是OutOfMemoryError,因为您只能打开很多流一次,大多数程序甚至是大型程序都需要一段时间才能达到此限制,但是如果您有一台服务器或需要长时间运行的程序,可能会导致程序崩溃。 – Joking313
谢谢。 对于您在评论中编辑过的示例,是否可以打开多个'system.in'扫描器?据我所知你不能。 另外,如何将'OutOfMemoryError'连接到'System.exit()'部分?我不太明白这一点。 – Mickey