如何在foreach java 8中执行算术运算

如何在foreach java 8中执行算术运算,java,foreach,java-8,Java,Foreach,Java 8,我是Java8新手,我尝试用Java8编写下面的代码片段,但确实有效 static int getMissingNo(int a[], int n) { int i, total; total = (n + 1) * (n + 2) / 2; for (i = 0; i < n; i++) total -= a[i]; return total; } // this is waht i tried in java 8 int

我是Java8新手,我尝试用Java8编写下面的代码片段,但确实有效

static int getMissingNo(int a[], int n) { 
    int i, total; 
    total = (n + 1) * (n + 2) / 2; 
    for (i = 0; i < n; i++) 
        total -= a[i]; 
    return total;
} 

// this is waht i tried in java 8
int  total = (n+1) * (n+2) /2;
unicArray.stream().forEach(e->{
    total  = total - e;
});
static int getMissingNo(inta[],intn){
int i,总计;
总数=(n+1)*(n+2)/2;
对于(i=0;i{
总计=总计-e;
});

代码段给了我一个编译错误,说明局部变量应该是final,但如果它是final,我如何返回该值

,您只需返回数组的
总计
总和
之间的差,如下所示:

int expectedSum = (n + 1) * (n + 2) / 2;
int actualSum = Arrays.stream(a).sum();  // .distinct().sum() for sum of unique numbers
return expectedSum - actualSum;

请查找以下代码:

static List<Integer> getMissingNo(int[] a, int n) {

        List<Integer> listOfDistinctElements = Arrays.stream(a)
                .boxed()
                .distinct().collect(Collectors.toList());

        List<Integer> elemntsLeftOut = new ArrayList<>();

        IntStream.range(1, listOfDistinctElements.get(listOfDistinctElements.size()-1)).forEach(index ->
                        {
                            if(!listOfDistinctElements.contains(index)){
                                 elemntsLeftOut.add(index);
                        }
                    });

        return elemntsLeftOut;
        }
静态列表getMissingNo(int[]a,int n){
List listOfDistinctElements=Arrays.stream(a)
.boxed()
.distinct().collect(collector.toList());
List elemntsLeftOut=new ArrayList();
IntStream.range(1,listOfDistinctElements.get(listOfDistinctElements.size()-1)).forEach(索引->
{
如果(!listOfDistinctElements.contains(索引)){
elemntsLeftOut.add(索引);
}
});
返回elemntsLeftOut;
}

您的要求和用例是什么?要求是返回整数数组中缺少的数字。如果数组为int[]a={1,2,4,5,6}应返回3So,那么这个变量n是什么?你们的迭代实现可以工作吗?若数组不包含重复序列和多个缺失的数字,那个么ArrayTanks.s的大小是正确的。但是如果输入为{1,1,2,3,5,5,7}则不起作用。重复项可以通过hashset删除,我想通过hashset使用java8特性进行迭代,并在中查找缺少的数字hashset@raju您也没有完成输入,如果您现在指向的是重复项,那么将是
n
。此外,问题中共享的迭代方法的解决方案在那里不会“起作用”。示例如果输入为{1,1,2,3,5,7},则预期输出为4,6。getMissingNo(int a[],int n),其中a是给定数组,n是数组中的元素数array@raju现有代码并不真正处理要查找的重复或多个缺失的数字,这就是解决方案的目的。另一方面,您编写的方法或发布的问题的实现并没有真正表明这是一种尝试。这可能是一个更好的主意,把你的尝试和你遇到的问题作为一个不同的问题发布出来。谢谢。但是如何找到多个丢失的数字{1,1,2,3,5,7};输出:4,6针对多个缺失元素对其进行编辑。