我想使用 reducer 来总结来自“args”的所有输入,然后除以 args 长度以获得我正在寻找的结果(只是一个学习 java 的简单函数)。
我正在按照(据我所知)我能找到的关于让流库工作的每个教程中的说明进行操作,但仍然没有成功。 TY 在高级方面有任何帮助。
public class AverageNumbers {
public static void main(String[] args) {
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
int z = Integer.parseInt(args[2]);
int sum = args.stream().reduce(0, (acc, cur) -> Integer.parseInt(acc) + Integer.parseInt(cur), Integer::sum);
// int math = sum / args.length;
System.out.println(sum);
}
}
我试过:
数组上没有
.stream()
方法。
您可以改为执行以下操作:
Arrays.stream
从String
获取args
流。mapToInt
和 Integer.parseInt
得到一个 IntStream
.sum
方法(存在于IntStream
)获取总数int sum = Arrays.stream(args).mapToInt(Integer::parseInt).sum();
double average = 1d * sum / args.length;
// Multiplying by the double value 1 is necessary to prevent integer division
IntStream#average
获得。
double average = Arrays.stream(args).mapToInt(Integer::parseInt).average().orElseThrow();
或
Collectors.averagingInt
:
double average = Arrays.stream(args).collect(Collectors.averagingInt(Integer::parseInt));