gpt4 book ai didi

java - 如何使用流来计算接收输入的数组的总和?

转载 作者:行者123 更新时间:2023-12-01 11:49:58 26 4
gpt4 key购买 nike

我是数组编程的新手,所以我不确定如何计算接收输入的数组的总和。通过研究,我学会了如何设置数组以及如何使用流计算数组的总和,但是当数组接收输入(使其不以设置值开头)时,我不知道如何计算总和。这是我的代码:

public class TestClass {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);

ArrayList a = new ArrayList();
for (int i = 0; i < 20; ++i){
double b = sc.nextDouble();
a.add(b);
int[] c = a;//This step is where I get lost. I'm not sure what needs to happen to a
Arrays.stream(c);
System.out.println(Arrays.stream(c).sum());
}
}
}

谢谢

注意:java.util.*、java.io.*、java.util.stream.* 和 java.util.Arrays 均已导入。

最佳答案

你首先要考虑一下你的任务。您正在向扫描仪询问 double值,稍后您需要 int[]大批。这不匹配。

正如其他人所说,如果您想将值求和为double,则不需要数组。 ,将列表声明为 List<Double>澄清这一点。然后你可以简单地流式传输列表来总结它,如 list.stream().reduce(Double::sum).orElse(0)list.stream().mapToDouble(Double::doubleValue).sum() .

但是,如果您只对总和感兴趣,则根本不需要列表:

Scanner sc = new Scanner(System.in);
double sum=0;
for (int i = 0; i < 20; ++i) {
sum += sc.nextDouble();
System.out.println(sum);
}

具有相同的效果。它不使用 Stream但使用流不会有任何好处。

如果你想通过Stream解决“总结二十个输入值”的任务您可以考虑省略中间金额。在这种情况下,有一个干净的解决方案:

Scanner sc = new Scanner(System.in);
double sum=DoubleStream.generate(sc::nextDouble).limit(20).sum();
System.out.println(sum);

关于java - 如何使用流来计算接收输入的数组的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28869861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com