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

mei*_*yal 15 java io bufferedreader

我在读取输入时遇到EOF问题Java.在这里,有单输入,输出考虑每行的输入.

例:

输入:

1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

输出:

0 
1
0
1
0
Run Code Online (Sandbox Code Playgroud)

但是,我使用Java进行编码,当我输入两个数字时,将打印单个输出.我想在Java中EOF使用单行输入和打印单行输出每行(终止)BufferedReader.

这是我的代码:

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());
}
Run Code Online (Sandbox Code Playgroud)

a q*_*ion 22

你正在消耗一条线,它被丢弃了

while((str=input.readLine())!=null && str.length()!=0)
Run Code Online (Sandbox Code Playgroud)

并且阅读一篇文章

BigInteger n = new BigInteger(input.readLine());
Run Code Online (Sandbox Code Playgroud)

所以尝试从字符串中获取bigint

BigInteger n = new BigInteger(str);

   Constructor used: BigInteger(String val)
Run Code Online (Sandbox Code Playgroud)

Aslo while((str=input.readLine())!=null && str.length()!=0)改为

while((str=input.readLine())!=null)
Run Code Online (Sandbox Code Playgroud)

看到相关的帖子字符串到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 
Run Code Online (Sandbox Code Playgroud)

javadocs


小智 7

使用文本文件时,使用BufferReader.read()时,EOF可能为-1,char为char.我用BufferReader.readLine()!= null做了一个测试,它运行正常.