Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;错误:没有找到适合reduce的方法;减少int[]数组时_Java_Stream_Reduce - Fatal编程技术网

Java &引用;错误:没有找到适合reduce的方法;减少int[]数组时

Java &引用;错误:没有找到适合reduce的方法;减少int[]数组时,java,stream,reduce,Java,Stream,Reduce,考虑到实施sum的这种尝试: int[] nums = { 1,3,4,5,7}; var sum = Arrays.asList(nums).stream().reduce(0,(a,b)->a+b); 像下面这样的问题通常是由于没有向编译器提供足够的类型信息来进行类型推断。但是这里我们有一个不含糊的int[]数组作为源。为什么会发生这种错误 Line 3: error: no suitable method found for reduce(int,(a,b)-&

考虑到实施sum的这种尝试:

int[] nums = { 1,3,4,5,7};
var sum = Arrays.asList(nums).stream().reduce(0,(a,b)->a+b);          
像下面这样的问题通常是由于没有向编译器提供足够的类型信息来进行类型推断。但是这里我们有一个不含糊的int[]数组作为源。为什么会发生这种错误

Line 3: error: no suitable method found for reduce(int,(a,b)->a + b)
        var sum = Arrays.asList(nums).stream().reduce(0,(a,b)->a+b);
                                              ^
    method Stream.reduce(int[],BinaryOperator<int[]>) is not applicable
      (argument mismatch; int cannot be converted to int[])
    method Stream.<U>reduce(U,BiFunction<U,? super int[],U>,BinaryOperator<U>) is not applicable
      (cannot infer type-variable(s) U
        (actual and formal argument lists differ in length))
  where U,T are type-variables:
    U extends Object declared in method <U>reduce(U,BiFunction<U,? super T,U>,BinaryOperator<U>)
    T extends Object declared in interface Stream

第3行:错误:没有找到适合reduce(int,(a,b)->a+b)的方法
var sum=Arrays.asList(nums).stream().reduce(0,(a,b)->a+b);
^
方法Stream.reduce(int[],BinaryOperator)不适用
(参数不匹配;无法将int转换为int[])
方法Stream.reduce(U、双函数、二进制运算符)不适用
(无法推断类型变量U)
(实际参数列表和正式参数列表长度不同))
其中U,T是类型变量:
U扩展方法reduce中声明的对象(U、双函数、二进制运算符)
T扩展接口流中声明的对象
var sum=Arrays.asList(nums)返回一个列表,因此reduce方法将int[]添加到int[],这是不允许的,并且会导致编译错误

这是一个可能的解决方案:

    int[] nums = { 1,3,4,5,7};
    var sum= Arrays.stream(nums).reduce(0,(a,b)->a + b);

var sum=Arrays.asList(nums)返回一个列表,因此reduce方法将int[]添加到int[],这是不允许的,并且会导致编译错误

这是一个可能的解决方案:

    int[] nums = { 1,3,4,5,7};
    var sum= Arrays.stream(nums).reduce(0,(a,b)->a + b);


啊,接得好。这是一个非常快的第一个被接受的答案-恭喜!啊,接得好。这是一个非常快的第一个被接受的答案-恭喜!