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


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

代碼如圖

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

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

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

                                             --youhow

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM