Как читать до конца файла (EOF) с помощью BufferedReader в Java?
У меня проблема с чтением ввода до EOF
в Java
. Здесь есть один вход, и выход учитывает ввод каждой строки.
Пример:
ввод:
1
2
3
4
5
выход:
0
1
0
1
0
Но, я закодировал с использованием Java, единственный вывод будет напечатан, когда я ввел два числа. Я хочу, чтобы один вход и печать выводили каждую строку (завершение EOF
) с помощью BufferedReader
в Java.
Это мой код:
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
StringBuffer pr = new StringBuffer("");
String str = "";
while((str=input.readLine())!=null && str.length()!=0) {
BigInteger n = new BigInteger(input.readLine());
}
Ответы
Ответ 1
Вы используете строку в, которая отбрасывается
while((str=input.readLine())!=null && str.length()!=0)
и читая Bigint в
BigInteger n = new BigInteger(input.readLine());
так что попробуйте получить Bigint из строки, которая читается как
BigInteger n = new BigInteger(str);
Constructor used: BigInteger(String val)
Также измените while((str=input.readLine())!=null && str.length()!=0)
на
while((str=input.readLine())!=null)
см связанную строку сообщения к bigint
readLine()
Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
увидеть Javadocs
Ответ 2
С текстовыми файлами, возможно, EOF равен -1 при использовании BufferReader.read(), char на char.
Я сделал тест с BufferReader.readLine()!= Null, и он работал правильно.
Ответ 3
BufferReader.readLine()!=null
не работает, когда у меня есть эти данные в моем файле:
1
2
3
4
В строке между 2 и 3 BufferReader.readLine()
получит NULL.