首页 > 解决方案 > Stream api reduce方法在尝试对大数求和时返回负值

问题描述

我正在尝试使用流 api reduce 方法对列表中的数字求和。它为较小的数字提供正确的结果。但是当我给出更大的数字时,它会返回一个不正确的负数。

这是我的代码

public void sumOfNum(List<Integer> numbers) {
    long result = numbers.stream().reduce(0, (a, b) -> a + b);
    System.out.print(result);
}

测试用例1(通过)

输入

12345、2343、4324、2323、24234

输出

45569

测试用例 2(失败)

输入

256741038, 623958417,623958417,714532089, 714532089

输出

-1361245246

标签: javajava-streamreduce

解决方案


您将它们添加为 Integers 并且 java 对 Integer value 有限制2147483647。如果您通过此最大值,您将从最小值开始计数 Integer.MAX_VALUE + 1 = -2147483648


推荐阅读