2010-04-03 24 views
0

我知道所有的數學運算都是處理當前值所需的最大數據類型,但是當您橫切一個循環時,您如何明確地乘以長整數?下面的代碼返回0,我懷疑是因爲溢出。將值顯式乘以長整數

long result = 0L; 
List<Long> temp = (List<Long>) getListOfIntegers(); 
for (int i = 0; i < temp.size(); i++) { 
    result *= temp.get(i).longValue(); 
} 
System.out.println(result); 
+1

這裏沒有溢出 - 只是一個我肯定已經至少咬過一次的錯誤......並注意列表中沒有任何零(或者你如果他們需要特殊的手牌,應妥善處理靈)。 – 2010-04-03 19:41:57

回答

9

改變第一線劃分成以下幫助:

long result = 1L; 

如0乘以會給你0 :)

6

結果爲零,因爲它開始作爲零,再乘以零被任何東西導致零。

+2

FFFFFUUUUUUUUUUUU!謝謝 – threadhack 2010-04-03 19:41:55

+0

你可能會嘗試浮點;它使各種奇怪的東西發生你不指望; =) – WhirlWind 2010-04-03 19:53:33

2

你的問題就出在這行:

long result = 0L; 

你被0乘以一切,這始終是0嘗試:

long result = 1L; 
3

環路返回0,因爲你初始化的結果爲0 。0 * x = 0.