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);
    }

第一个值超出了 Long 数的边界,因此出现以下异常:

线程“主”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

使用字符串构造函数: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 回答