1

スキャナーまたはバッファー付きリーダーのいずれかを取得して空白行を検出しようとすると、多くの問題が発生します。たとえば、次のファイルを含むファイルがある場合:

there
cat
dog
(BLANK LINE)

私がこれを行う場合:

while( scan.hasNextLine() )
{
String line = scan.nextLine();
...
...
}

スキャナーは空白行を検出しません。バッファ付きリーダーも使用しようとしましたが、この問題が発生しました。スキャナーがそのような空白行を見つけたときに「」を返すことができる方法はありますか?乾杯

4

1 に答える 1

3

入力には、\n文字と同じ数の行があります。与えられた入力

"there\ncat\ndog\n"

次の行は次のように正しく分割されます

"there\n"
"cat\n"
"dog\n"

(つまり、で終了しないため、4番目の空白行\nはありません。)

言い換えると、"dog\n"が読み取られた後、スキャナー(またはそのことについてはバッファーされたリーダー)がEOFに到達し、戻るための空の行すらありません。(行が返されると、改行文字が削除されることに注意してください。)

したがって、これは予想される動作であるため、最も簡単な修正方法がわかりません。これを解決する最善の方法は、単に\n入力にaを追加して、ループが余分な反復を実行するようにすることだと思います。

于 2012-04-22T08:25:32.810 に答える