2015-08-13 52 views
-1

對於某些程序,我需要一個數組來存儲斐波那契序列號,直到第100個項。雖然我可以計算出使用fib函數並存儲在數組中,但我想通過手動存儲來節省時間。我怎樣才能做到這一點?在Java中的biginteger數組中分配值

我試圖做到這一點,像這樣:

BigInteger[] arr={259695496911122585,420196140727489673, 
679891637638612258,1100087778366101931,1779979416004714189}; 

但是,我得到的錯誤「類型不匹配,不能INT轉換爲BigInteger的」。

+1

是什麼讓你覺得'BigInteger'有一個字面格式?你需要使用像BigInteger.valueOf(「259695496911122585」)等。 –

+0

@JonSkeet,這是一個完全有效的答案=) –

+1

@JonSkeet這是錯誤的。 'BigInteger valueOf(long val){}'。 valueOf需要很長時間。 – Bikku

回答

2

您有一個BigInteger數組,並嘗試添加原始int類型。你必須創建BigInteger的情況下,它可以是你的陣列的一部分:

BigInteger[] arr={BigInteger.valueOf(1),BigInteger.valueOf(259695496911122585L)}; 

或者,如果你的價值觀是更大的作爲長值使用帶有字符串參數的構造:

BigInteger[] arr={new BigInteger("259695496911122585"),new BigInteger("420196140727489673")}; 
+0

是的,你是對的,但我需要爲每個條目編寫新的BigInteger(「」)。 –

+0

是的,但是這可以通過搜索/替換或塊編輯模式在一個好的編輯器中輕鬆完成。您也可以在計算時使用序列化來將值添加到數組中,以便將其保存以供稍後程序使用,或者僅以這種java數組格式打印並複製/粘貼它們。 – mszalbach

+0

真的很有幫助,請詳細說明,如何以java數組格式打印。 –

1

int是一個基本類型,而BigInteger是一個類類型。

對於你的情況,你有一個BigIntegers數組。所以數組的每個元素都必須是BigInteger類的類型。你給它int,一個原始類型,所以它會抱怨。

要解決這個問題,數組的每個指示都應該包含一個BigInteger類型的對象。

BigInteger[] bigIntegerArray = {new BigInteger(#),.....} 

其中#是數字,而...是附加索引。