2010-04-03 70 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.