java计算数组平均值需先求和再除以长度,注意避免整数除法截断和空数组异常;推荐用double累加并校验null/空数组,或使用arrays.stream().average()配合orelse处理。

Java 中计算数组所有元素的平均值,核心是先求和再除以元素个数,但要注意数据类型选择(避免整数除法截断)和空数组的边界情况。
用 double 类型求和并计算平均值
如果数组元素是 int 或 long 类型,直接用 int 求和再除以长度会导致结果被截断。推荐将累加器和结果都声明为 double,确保小数部分保留:
- 定义一个 double sum = 0.0 变量,遍历数组累加每个元素(自动提升为 double)
- 用 sum / array.length 得到平均值(只要 sum 是 double,除法结果就是 double)
- 若数组为空(
array.length == 0),需提前判断,否则会触发ArithmeticException: / by zero
使用 Java 8 的 Stream 简洁写法
对 int[] 数组,可用 Arrays.stream(array).average(),它返回 OptionalDouble:
- 调用
.orElse(0.0)或.orElseThrow()处理空数组场景 - 该方法内部已处理类型转换和空值,代码更简洁,但性能略低于手动循环(对普通业务影响不大)
- 注意:只适用于基本类型数组(int[]、long[]、double[]),对象数组需先映射为数值流
处理空数组和异常情况
生产代码中不能假设数组非空。统一做法是:
- 检查
array == null || array.length == 0,根据业务返回默认值(如 Double.NaN、0.0)或抛出 IllegalArgumentException - 不建议静默返回 0,容易掩盖逻辑错误;明确表达“无数据可算”更安全
- 如果业务允许,也可让调用方保证非空,但文档需注明前提条件
示例:完整可运行的 int[] 平均值方法
(含空数组防护)
public static double average(int[] arr) {
if (arr == null || arr.length == 0) {
throw new IllegalArgumentException("Array must not be null or empty");
}
double sum = 0.0;
for (int value : arr) {
sum += value;
}
return sum / arr.length;
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











