如何使用Java中的BufferedReader读取直到文件结束(EOF)?

2022-09-02 09:26:50

我在阅读输入时遇到了问题,直到.在这里,有单个输入,输出考虑每行的输入。EOFJava

例:

输入:

1
2
3
4
5

输出:

0 
1
0
1
0

但是,我已经使用Java编码,当我输入两个数字时,单个输出将打印出来。我想要在Java中使用单输入并打印每行(终止)的单个输出。EOFBufferedReader

这是我的代码:

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)

并阅读一个大

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

对于文本文件,使用 BufferReader.read() 时,EOF 可能为 -1,逐个字符。我用BufferReader.readLine()!=null做了一个测试,它工作正常。


推荐