19

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

例:

入力:

1
2
3
4
5

出力:

0 
1
0
1
0

しかし、私は Java を使用してコーディングしました。2 つの数値を入力すると、1 つの出力が出力されます。Javaで使用して、単一の入力と単一の出力を各行に出力したい(terminate 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 

javadocを参照

于 2013-08-01T10:42:54.723 に答える
7

テキスト ファイルでは、BufferReader.read() を char ごとに使用すると、EOF が -1 になることがあります。BufferReader.readLine()!=null でテストを行ったところ、正常に動作しました。

于 2014-06-05T00:33:12.987 に答える