检查空值的Java字符串突然变为空

时间:2013-03-15 05:12:50

标签: java runtime-error

我使用StreamGobbler来消耗进程的输出。

InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
int count = 0;
while ( (line = br.readLine()) != null);
{
    if(line == null){
         System.out.println("This shouldn't print out.");
    }
}

我认为很明显字符串“这不应该打印出来”。不应该打印出来,但确实如此。我不知道要提供哪些进一步的数据。

2 个答案:

答案 0 :(得分:6)

在while表达式后面有一个分号,它终止了它,因此以下大括号被视为通用语句块。

基本上,分号会使它像这样对待。

while ( (line = br.readLine()) != null) {} //do nothing

if(line == null){
     System.out.println("This shouldn't print out.");
}

答案 1 :(得分:1)

从while循环中删除分号,它使循环不执行任何操作,然后向前移动到if块,这将是真的。这就是打印的原因