将值显式乘以long

时间:2010-04-03 19:37:14

标签: java math

我知道所有数学都是作为处理当前值所需的最大数据类型完成的,但当你横向循环时,如何明确地乘以long?我怀疑,由于溢出,以下代码返回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);

4 个答案:

答案 0 :(得分:9)

将第一行更改为以下内容将有所帮助:

long result = 1L;

乘以0会得到0:)

答案 1 :(得分:6)

结果为零,因为它从零开始,并且将零乘以任何结果都为零。

答案 2 :(得分:3)

循环返回0,因为您使用0. 0 * x = 0初始化结果。

答案 3 :(得分:2)

你在这一行中说谎:

long result = 0L;

你将所有东西乘以0,总是0.尝试:

long result = 1L;