分配给BigInteger数组中的元素时出错

时间:2015-10-10 17:26:49

标签: java biginteger

这是我的代码。当我创建BigInteger数组并尝试分配值时,它会显示错误。

package test;
import java.math.*;
import java.lang.*;
import java.util.*;

public class Test {


    public static void main(String[] args) {

        BigInteger[] coef =  new BigInteger[78];
        int a=24;
        coef[a]=676557656534345345654645654654645645645645665656567; // Error comes here why
        System.out.println(coef[a]);
    }
}

4 个答案:

答案 0 :(得分:2)

Java具有静态类型,并且仅对原始类型的包装器启用自动装箱,例如intInteger,但不适用于BigInteger。你必须要做

new BigInteger("676557656534345345654645654654645645645645665656567") 

明确。

答案 1 :(得分:2)

首先,我们不允许使用2147483647作为输入,因为int范围是-2147483648 : 2147483647。如果您的输出大于此数字,它将自动反转并达到其最低值,即-2147483648

要使用BigInteger操作的位号,请将号码设为String

作为你的问题我建议使用

coef[a]=new BigInteger("676557656534345345654645654654645645645645665656567"); 

因为它为您提供了java.lang.Math的所有相关方法,您可以通过在其中传递字符串来执行算术运算。check this document

我制作了Fabonacci系列,当一个大数字传递给它时会产生巨大的输出....

查看Fabonacci series on my GitHub

希望它可以帮到你!!

答案 2 :(得分:1)

始终保持谨慎 所有大于2147483647的数字都不允许作为输入,因为int范围是-2147483648到2147483647(永远不要忘记它)。 如果您的输出大于限制,它将反转并达到其最低值,即-2147483648。 我建议您使用: coef [a] = new BigInteger(" 324576565343453456546456546546456456456455643671"); 所有重要的函数都在java.lang.Math类中,您可以通过向其传递字符串来执行算术运算。

答案 3 :(得分:0)

    public static void main(String[] args) {
        BigInteger[] coef = new BigInteger[78];
        int a = 24;
        coef[a] = new BigInteger("676557656534345345654645654654645645645645665656567");
        System.out.println(coef[a]);
    }