2013-03-15 93 views
0

我正在使用StreamGobbler來消耗進程的輸出。檢查空值的Java字符串突然變爲空

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."); 
    } 
} 

我認爲這是顯而易見的字符串「這不應該打印出來。」不應該打印出來,但確實如此。我不知道還有什麼數據可以提供。

回答

6

在while表達式之後有一個分號,這會終止它,因此以下大括號被視爲通用語句塊。

基本上,分號導致它被這樣對待。

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

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

謝謝。我覺得自己像個白癡。 – PoorAuroch 2013-03-15 05:36:58

1

從while循環,它使循環刪除分號什麼也不做,再往前走的,如果塊,這將是真實的。這就是它打印的原因