我知道所有数学都是作为处理当前值所需的最大数据类型完成的,但当你横向循环时,如何明确地乘以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);
答案 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;