2015-05-25 69 views
1
public class DeadCodeInLuna { 
    public static void main(String[] args) throws IOException { 
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
     String string; 
     for (string = in.readLine(); !string.equals(""); string=in.readLine()) { 
      if(string == null) { 
       System.out.println("null while reading response!"); 
      } 
     } 
    } 
} 
+1

您比較vlaue後進行空檢查,以便以後嘗試更改對象不能爲空(string == null){for(string = in.readLine();!string.equals(「」); string = in.readLine()){ –

回答

4

因爲string永遠不能null如果!string.equals("")計算結果爲true

換句話說,當!string.equals("")truestring保證是不是null否則NullPointerException會發生。

+0

好的捕獲。我看不到那個。 –

1

因爲在代碼的那一點,string不能爲空。如果它從in.readLine()出來null,您會在for的條件檢查中得到NullPointerException

將其更改爲

for(string=in.readLine();!"".equals(string);string=in.readLine()) 
     if(string==null) System.out.println("null while reading response!"); 
    } 

其中equals會不管string是否是空的工作,你會看到警告消失。

0

在你的病情,你避免string == null

for (string = in.readLine(); !string.equals(""); string=in.readLine()) { 
//       ^--------> here!!! 

所以if(string == null)是多餘的,永遠不會爲真

相關問題