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ブロックに進みます。これはtrueになります。それが印刷される理由です

于 2013-03-15T05:16:20.107 に答える