2017-06-29 15 views
1

のIntelliJ IDEA - 反復可能

while ((line = reader.readLine()) != null) { 
    // do something with line 
} 

とBufferedReader readerの入力ストリームがのIntelliJ IDEAで["there is only one line"]

を持っていることを、我々は、whileループの開始時にブレークポイントを持っていると仮定しましょうを消費せずに式を評価します(Ctrl + U)reader.readLine()を評価すると、"there is only one line"が効果的に消費され、ブレークポイントから再開すると、BufferedReaderに行がなくなるためwhileループ条件が失敗します。

reader.readLine()を実際の行を使わずに評価する方法はありますか?

+0

なぜこの行をステップ実行しませんか?そして、あなたはループ内にいて、 'line!= null'か、ループの直後で' line == null'のどちらかです。 – SubOptimal

+0

Eclipse内で同等の機能がラインを消費していないことを漠然と思い出しました。これがIDEAに関する質問を引き起こしました。 ループに入る前に、その行があらかじめヌルでないか、同時にどの値が内部かを知ることが非常に便利でした。 –

答えて

0

表現を評価すると、それを実行して結果が表示されるため、効果的にreader.readline()は常に1行を消費します。

ただし、読み取り操作を実行できる場合はready()メソッドを試してみてください。trueが返されます。

注意。読者がEOFに到達しようとしている場合、ready()trueを返します。これは、読み取り操作が実行できるため、すぐにnullを返します。

Java Orace Docs: ready()

0

Eclipseでストリーム/リーダーを消費せずにラインを読むことfunctionallityがあった場合、私は驚くだろう。

あなたがラインwhile ((line = reader.readLine()) != null) {にブレークポイントを持つことができるようになると、ループに入る前lineの値を検査すると、その行のCTRL-SHIFT-F8続いIntelliJのCTRL-F8で条件付きブレークポイントを(追加したり、右クリックをするために可能性が考えられる解決策ブレークポイントアイコン上)をクリックします。実行はlineがnullではないだろうとすぐに停止します方法

conditional breakpoint

関連する問題