如何解决减少 int[] 数组时出现“错误:找不到适合减少的方法”
鉴于此尝试实现总和:
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,b)->a + b)
var sum = Arrays.asList(nums).stream().reduce(0,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,? super T,BinaryOperator<U>)
T extends Object declared in interface Stream
解决方法
var sum = Arrays.asList(nums) 返回一个List
这是一个可能的解决方案:
int[] nums = { 1,3,4,5,7};
var sum= Arrays.stream(nums).reduce(0,(a,b)->a + b);
或
var result = Arrays.stream(nums).sum();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。