1. 程式人生 > >Java中Scanner的輸入流的關閉問題

Java中Scanner的輸入流的關閉問題

ber you put -s n) println mil 用戶 inpu

為什麽Scanner in語句只能關閉一次,且對於其他任何Scanner輸入流也關閉?

代碼如圖

  1. import java.util.Scanner;
  2. public class ScannerTest {
  3. public static void main(String[] args) {
  4. Scanner inputA = new Scanner(System.in);
  5. Scanner inputB = new Scanner(System.in);
  6. int numberA = input1.nextInt();
  7. int numberB = input1.nextInt();
  8. inputA.close();
  9. System.out.println(numberA);
  10. System.out.println(numberB);
  11. }
  12. }

運行後java報錯“java.util.NoSuchElementException.”

查閱API後可知
System.in“標準”輸入流。此輸入流已打開並準備提供輸入數據。通常,此輸入流對應鍵盤輸入、由主機環境或用戶指定的另一個輸入源。
當inputA調用close()方法後,System.in這個流將會關閉,而這種關閉將是永久性的,導致之後將不能接受任何數據,從而引發java.util.NoSuchElementException的錯誤,而且將“Scanner inputB = new Scanner(System.in);”這行代碼移動到“inputA.close();”後面依舊是同樣的錯誤,則說明當流關閉一次後就再也無法重新打開了。

--youhow

如有錯誤敬請批評指正!謝謝!

Java中Scanner的輸入流的關閉問題