2014-09-29 106 views
3

我想在BigInteger實例中存儲大型計算。我嘗試這樣做:BigInteger(long)在BigInteger中有私人訪問

BigInteger answer=new BigInteger(2+3); 

,並得到了以下錯誤:

temp.java:17: error: BigInteger(long) has private access in BigInteger 
         BigInteger answer=new BigInteger(2+3); 
             ^
1 error 

我知道,而不是 「2 + 3」 應該有一個字符串值。但我不知道如何滿足這個條件(假設我沒有多少2 + 3)。請告訴我如何將計算值分配給BigInteger對象(將BigInteger答案分配給2 + 3)。

+0

參見http://stackoverflow.com/questions/26186277/why-is-there-bigintegerstring-but-no-bigintegerlong – Raedwald 2014-10-06 07:02:27

回答

9

如果要使用BigInteger執行算術運算,則應爲每個值創建一個BigInteger,然後使用BigInteger.add。但是,你不需要需要使用字符串來做到這一點。如果你的輸入已經是一個字符串並且可能很長,但是如果你已經有了long,你可以使用BigInteger.valueOf。例如:

BigInteger answer = BigInteger.valueOf(2).add(BigInteger.valueOf(3)); 

我當然不會轉換longString只是爲了然後將它傳遞到BigInteger構造。

+0

那麼,爲什麼要做OP而不是'BigInteger.valueOf(2 + 3 )'? – 2014-09-29 16:16:33

+1

@HotLicks:這取決於他們的真實情況。也許他們實際上是以字符串作爲輸入。或者,即使他們將「long」值作爲輸入,他們也可能不希望結果溢出 - 例如,「Long.MAX_VALUE + Long.MAX_VALUE」。 – 2014-09-29 16:18:02

2

你可以只使用的BigInteger的add(...)方法:

BigInteger answer = new BigInteger("2").add(new BigInteger("3")); 

有關此溶液溢流不用擔心。