Я использую фрагмент кода ниже, но он работает не совсем так, как я понимаю.
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()
говорится:
Читает строку текста. Строка считается завершенной любым из перевода строки (\n
), возврата каретки (\r
) или возврата каретки, за которым сразу следует перевод строки.
Returns :
String
, содержащий содержимое строки, не включая символы окончания строки, или ноль, если достигнут конец потока
Выдает :
IOException
- При возникновении ошибки ввода / вывода
Насколько я понимаю, readLine
должен возвращать ноль при первом вводе ввода, кроме завершения строки, например \r
. Однако этот код просто зацикливается бесконечно. После отладки я обнаружил, что вместо нуля, возвращаемого при вводе только символа завершения, он на самом деле возвращает пустую строку (""). Это не имеет смысла для меня. Что я не правильно понимаю?