以下のコード スニペットを使用していますが、理解したとおりに機能していません。
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
try {
line = br.readLine();
while(line != null) {
System.out.println(line);
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
それについて Javadoc を読むことから、次のreadLine()
ように述べています。
1 行のテキストを読み取ります。\n
行は、ライン フィード ( )、キャリッジ リターン ( \r
)、またはキャリッジ リターンの直後のラインフィードのいずれかによって終了すると見なされます。
戻り値:String
行終了文字を含まない、行の内容を含む A、またはストリームの終わりに達した場合は null
例外:
IOException
- I/O エラーが発生した場合
これについての私の理解ではreadLine
、 のような行末以外に入力が初めて入力されなかった場合は null を返す必要があります\r
。ただし、このコードは無限にループしてしまいます。デバッグ後、終了文字が入力されただけで null が返される代わりに、実際には空の文字列 ("") が返されることがわかりました。これは私には意味がありません。私は何を正しく理解していませんか?