9

次の入力があるとします。

4534534534564657652349234230947234723947234234823048230957349573209483057
12324000123123

これらの値を次の方法で割り当てようとしBigIntegerました。

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        BigInteger num1 = BigInteger.valueOf(sc.nextLong());
        sc.nextLine();
        BigInteger num2 = BigInteger.valueOf(sc.nextLong());

        BigInteger additionTotal = num1.add(num2);
        BigInteger multiplyTotal = num1.multiply(num2);

        System.out.println(additionTotal);
        System.out.println(multiplyTotal);
    }

最初の値は長い数値の境界の外にあるため、次の例外が発生します。

スレッド「メイン」の例外 java.util.InputMismatchException: 入力文字列の場合: 「4534534534564657652349234230947234723947234234823048230957349573209483057」

BigInteger は、メソッドで使用するために Long 型を期待していると想定しました(ここでvalueOf()述べたように)。非常に大きな数値を BigInteger に渡すにはどうすればよいですか?

4

4 に答える 4

9

入力数値が に収まらない場合は、引数を取るコンストラクターを使用しlongます。String

String numStr = "453453453456465765234923423094723472394723423482304823095734957320948305712324000123123";
BigInteger num = new BigInteger(numStr);
于 2015-06-20T17:10:57.997 に答える
3

膨大な数を文字列として読み取ります。

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    String s = in.nextLine();
    BigInteger num1 = new BigInteger(s);

    s = in.nextLine();
    BigInteger num2 = new BigInteger(s);

    //do stuff with num1 and num2 here
}
于 2015-06-20T17:22:32.917 に答える
1

String コンストラクターを使用します: http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)

      public BigInteger(String val)
于 2015-06-20T17:11:39.253 に答える
0

文字列コンストラクターを使用します。

このような。

http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)

long データ型が任意の大きな数値を処理できる場合、BigInteger は必要ありません。

于 2015-06-20T17:11:06.640 に答える