Как читать до конца файла (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());
}

person meisyal    schedule 01.08.2013    source источник
comment
Вы можете вставить свой код, чтобы попытаться помочь вам?   -  person Deckard27    schedule 01.08.2013
comment
Наверное br.readLine() != null !!!   -  person AllTooSir    schedule 01.08.2013
comment
вставьте свой код? для чего вы пытались   -  person a question    schedule 01.08.2013
comment
@AndriasMeisyal Это все еще не ясно. Какой тип ввода вы хотите и что должно быть на выходе? Если вы введете 1 2 3 в качестве входных данных, вы не сможете преобразовать его в целое число, потому что между 1 2 3 есть пробелы без изменений.   -  person Sajal Dutta    schedule 01.08.2013
comment
Да, ты прав. Но, извините, это один ввод каждой строки.   -  person meisyal    schedule 01.08.2013


Ответы (2)


Вы потребляете строку at, которая отбрасывается

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

person a question    schedule 01.08.2013
comment
Боже мой. Спасибо, это работает, я могу узнать больше о строках, которые вы мне сказали. Спасибо и еще раз спасибо за вас, @a вопрос - person meisyal; 01.08.2013
comment
Что произойдет, если мой файл будет содержать null в виде строки??? Я не могу прочитать полный файл, может ли это быть причиной? - person uniruddh; 31.03.2014
comment
@astuter null — это ключевое слово Java. "null" — это строка. Увидеть разницу ? - person dimitris93; 19.06.2015

С текстовыми файлами, возможно, EOF равен -1 при использовании BufferReader.read(), char за char. Я сделал тест с BufferReader.readLine()!=null, и он работал правильно.

person alex    schedule 05.06.2014