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
相关产品推荐
相关产品推荐

