2015-12-19 27 views
-1

尝试使用BigInteger第一次,这是我的代码:BigInteger,它是整数太大

public class Factx 
{ 
    public static void main(String[] args) 
    { 
     BigInteger[] asd = new BigInteger[10]; 
     asd[0] = 123456458979851322316546445665; 
     System.out.println(asd[0]); 
    } 
} 

编译此,给出了一个错误Integer number too large

我也试过改变,

 asd[0] = new BigInteger(123456458979851322316546445665); 

也提到了其他一些问题,没有多大帮助,我是否错过了一些东西?最好的解决方法是什么?谢谢,

回答

5

asd[0] = 123456458979851322316546445665;不适合,原因有二:

  1. 您可以将原始值不分配给它的类型是引用类型(变量,除非该引用类型的包装类的那原始类型,如Integerint的包装)。

  2. 123456458979851322316546445665是一个int文字(即使你加L后缀,它仍然是一个long文字过大)过大。这也解释了为什么asd[0] = new BigInteger(123456458979851322316546445665);不起作用。

相反,使用BigInteger构造函数,一个String

BigInteger[] asd = new BigInteger[10]; 
    asd[0] = new BigInteger("123456458979851322316546445665"); 
    System.out.println(asd[0]); 

输出:

123456458979851322316546445665 
+0

谢谢,因为我读这些是不可变像字符串,我可以对保存的值执行add()方法吗? – OBX

+1

@oblivion你可以执行'add()'。它会返回一个新的'BigInteger'实例。 – Eran

+0

谢谢Eran :),并且BigInts的值有没有限制? – OBX

0

通过

asd[0] = new BigInteger("123456458979851322316546445665"); 

的BigInteger没有按创建的BigInteger” t只接受通过构造函数从整数到BigInteger的显式转换。