Как читать до конца файла (EOF) с помощью BufferedReader в Java?

у меня проблема с чтением ввода до EOF на Java. Здесь есть один вход, а выход рассматривает вход каждой строки.

пример:

вход:

1
2
3
4
5

выход:

0 
1
0
1
0

но, я закодировал с помощью Java, один выход будет напечатан, когда я вводил два числа. Я хочу один вход и печатать один выход каждой строки (terminate 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());
}

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) to

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


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