掃描儀是一個流,所以當程序終止流被自動關閉你的,但它是不好的做法,無法靠近溪流,因爲在較大較長的運行程序,他們可能會出現問題,所以是一切正確關閉,但如早些時候說這是不好的做法。
如果你必須在同一時間將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