2015-12-19 29 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的顯式轉換。