0

我正在使用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.");
    }
}

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

4

2 回答 2

6

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

基本上,分号导致它被这样对待。

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

if(line == null){
     System.out.println("This shouldn't print out.");
}
于 2013-03-15T05:15:58.130 回答
1

从 while 循环中删除分号,它使循环什么都不做,然后前进到 if 块,这将是真的。这就是它打印的原因

于 2013-03-15T05:16:20.107 回答