web-dev-qa-db-ja.com

JavaのBufferedReaderを使用してファイルの終わり(EOF)まで読み取る方法

EOFJavaまで入力の読み取りに問題があります。ここでは、単一の入力があり、出力は各行の入力を考慮します。

例:

入力:

1
2
3
4
5

出力:

0 
1
0
1
0

ただし、Javaを使用してコーディングしているため、2つの数値を入力したときに1つの出力が出力されます。 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());
}
15
meisyal

で行を消費していますが、これは破棄されます

_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 を参照してください

22
a question

テキストファイルの場合、BufferedReader.read()を1文字ずつ使用する場合、EOFは-1です。BufferBuffer.readLine()!= nullでテストを行い、正常に動作しました。

7
alex