Java计算数组总和与平均值需遍历累加后除以长度;整型数组求平均须转double防精度丢失;Stream API提供sum()和average()方法;空数组或null需校验避免异常;二维数组需嵌套遍历或扁平化处理。

Java 中计算数组所有元素的总和与平均值,核心是遍历数组累加求和,再除以元素个数。注意整型数组求平均值时要避免整数除法导致精度丢失,需转为 double 类型运算。
基本步骤:遍历求和 + 类型转换求平均
对一维数组(如 int[] 或 double[]),先用 for 循环或增强 for 循环累加所有元素得到 sum;再用 sum 除以数组长度 length 得到平均值。关键点在于:若原数组是 int 类型,sum 也默认是 int,直接除会截断小数部分,必须显式转成 double。
- int[] arr = {1, 2, 3, 4, 5};
- int sum = 0;
- for (int x : arr) sum += x;
- double avg = (double) sum / arr.length; // 必须转 double,否则 avg = 3.0 而不是 3.0
使用 Java 8 Stream 简洁写法
Stream API 提供了更函数式的表达方式,适合代码简洁性要求高的场景。IntStream 和 DoubleStream 分别对应整型和浮点型数组,自带 sum() 和 average() 方法。
- int[] arr = {1, 2, 3, 4, 5};
- int sum = Arrays.stream(arr).sum();
- OptionalDouble avg = Arrays.stream(arr).average(); // 返回 OptionalDouble
- double result = avg.orElse(0.0); // 防空处理
处理空数组或 null 的安全写法
实际开发中必须考虑边界情况。数组为 null 或长度为 0 时,直接访问 length 或调用 stream 会抛出 NullPointerException 或 NoSuchElementException。建议提前校验:
立即学习“Java免费学习笔记(深入)”;
- if (arr == null || arr.length == 0) { return new double[]{0, 0}; } // 总和与平均值都设为 0
- 或在 Stream 写法中用 Optional 包裹结果,避免运行时异常
扩展:多维数组的求和与平均
二维数组(如 int[][])需嵌套遍历。可先扁平化再计算,或用两层循环累加:
- int[][] matrix = {{1, 2}, {3, 4}};
- int sum = 0, count = 0;
- for (int[] row : matrix) { for (int x : row) { sum += x; count++; } }
- double avg = (double) sum / count;


















