首页 > 解决方案 > 使用 Java 流从 int 数组中获取缺失的数字

问题描述

我有以下数组,

int [] a = {5,3,10,8,4,2,9,6};

我正在尝试从 tha 数组中获取丢失的数字,

private static int getMissingNumber(int[] a) {
    int expectedSum = IntStream.rangeClosed(1, 10)
            .reduce(0, Integer::sum);
    int actualSum = Arrays.stream(a).reduce(0, Integer::sum);

    return expectedSum-actualSum;
}

但是得到 8 而不是 7。我在这里错过了什么?

标签: javaarraysjava-stream

解决方案


你的最小值2应该是范围的开始IntStream.rangeClosed(2, 10)

也可以直接.sum()调用IntStream

private static int getMissingNumber(int[] a) {
    return IntStream.rangeClosed(2, 10).sum() - Arrays.stream(a).sum();
}

推荐阅读