2015-05-25 42 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)是多余的,永远不会为真

相关问题