Java中Scanner的輸入流的關閉問題
阿新 • • 發佈:2017-08-03
ber you put -s n) println mil 用戶 inpu
為什麽Scanner in語句只能關閉一次,且對於其他任何Scanner輸入流也關閉?
代碼如圖
- import java.util.Scanner;
- public class ScannerTest {
- public static void main(String[] args) {
- Scanner inputA = new Scanner(System.in);
- Scanner inputB = new Scanner(System.in);
- int numberA = input1.nextInt();
- int numberB = input1.nextInt();
- inputA.close();
- System.out.println(numberA);
- System.out.println(numberB);
- }
- }
運行後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的輸入流的關閉問題