19

我在读取输入之前遇到EOF问题Java。在这里,有单个输入,输出考虑每行的输入。

例子:

输入:

1
2
3
4
5

输出:

0 
1
0
1
0

但是,我使用 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());
}
4

2 回答 2

29

您正在消耗一条线,该线被丢弃

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

于 2013-08-01T10:42:54.723 回答
7

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

于 2014-06-05T00:33:12.987 回答