2013-01-16 188 views
0

當我需要通過方法close()關閉Scanner,我有一個代碼如下,可以解釋爲什麼我需要檢查if(input != null)嗎?解釋掃描儀關閉()方法Java

Scanner input = new Scanner(new File("System.txt")); 

... 

Public void closeFile() { 
    if(input != null) { 
      input.close(); 
    } 
} 

回答

2

可以在任何一個解釋爲什麼我需要檢查,如果(輸入!= NULL)嗎?

它只是一個null check如果輸入爲空它會拋出NullPointerException異常

考慮下面的代碼:

Scanner input = new Scanner(new File("System.txt")); 
    public void someMethod(){ 
     input = doSomething(); //say doSomething() returns null 
    } 
    Public void closeFile() 
    { 
    if(input != null) 
     input.close(); 
    } 

現在,作爲輸入爲空,如果你試圖調用close()它會拋出NPE>

+0

對,輸入從文本文件中通過input.hasNext()讀取記錄,所以在此方法中,它將返回null,謝謝! – Twocode

+1

@Twocold不是真的Scanner.hasNext()返回布爾值不是Scanner實例,我的意思是應該返回一個Scanner實例的doSomething()返回null – PermGenError

+0

還有一個問題,如果我可以在someMethod()中檢查NPE,而不是closeFile()方法?謝謝 – Twocode

0

input設置爲null 別處?我注意到,分配不final,因此它可以被重新分配(給予適當的訪問權限)

+0

的情況是,我需要輸入由文本文件掃描儀並閱讀它,然後用上面提供的代碼在最後關閉它,所以......任何想法都可以嗎? – Twocode