You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中计算数组平均值遇到问题求助

问题分析与解决

嘿,作为Java新手很容易踩这个小坑,我来给你掰扯清楚~

你当前的代码里,确实计算了数组的平均值,但你根本没把这个计算结果输出出来,反而打印的是原数组,所以才会看到[1, 2, 3]这个结果。

核心问题拆解

  • Arrays.stream(myArray).average() 这行代码的作用是计算数组的平均值,但它返回的是一个 OptionalDouble 对象(Java用来处理可能为空的数值,避免空指针问题),你只是调用了这个方法,既没保存结果,也没输出它。
  • 而你最后执行的 System.out.println(Arrays.toString(myArray)),本来就是专门用来打印原数组内容的方法,所以输出原数组完全是意料之中的。

修正后的代码

给你两种常见的处理方式,根据场景选:

方式1:确定数组非空时直接获取值

如果能保证数组永远不会是空的,可以直接取出平均值:

int myArray[] = {1,2,3};
// 计算平均值并取出
double average = Arrays.stream(myArray).average().getAsDouble();
// 打印平均值
System.out.println("数组的平均值是:" + average);
// 如果你还需要打印原数组,保留这行
System.out.println(Arrays.toString(myArray));

方式2:更安全的处理(推荐)

如果数组有可能为空(比如动态生成的数组),用ifPresent处理OptionalDouble更稳妥,避免报错:

int myArray[] = {1,2,3};
// 计算平均值,只有当存在有效值时才打印
Arrays.stream(myArray).average().ifPresent(avg -> System.out.println("数组的平均值是:" + avg));
// 打印原数组(可选)
System.out.println(Arrays.toString(myArray));

运行修正后的代码,你就能看到预期的平均值2.0啦~

内容的提问来源于stack exchange,提问作者Rakkety

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:34:28