Java中如何获取二维数组平均数值最高的行?
解决思路与代码修改
要实现返回平均数值最高的行,核心是在计算每行平均值的同时,追踪当前最大的平均值及其对应的行。你的现有代码只计算了每行平均值并返回最后一行的结果,缺少追踪逻辑,以下是具体修改方案:
关键改动点
- 新增变量记录当前最大平均值(初始设为负无穷,确保第一行平均值能被正确捕获)
- 新增变量记录最大平均值对应的行索引
- 修改方法返回类型为
int[](因为要返回整行数组,而非单个平均值) - 遍历每行时,完成平均值计算后立即与当前最大值比较,更新追踪变量
修改后的完整代码
int[][] array = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; public static int[] getRowWithHighestAverage(int grid[][]) { // 处理空数组边界情况 if (grid == null || grid.length == 0) { return new int[0]; } int maxRowIndex = 0; double maxAverage = Double.NEGATIVE_INFINITY; for (int i = 0; i < grid.length; i++) { double sum = 0; // 计算当前行总和 for (int j = 0; j < grid[i].length; j++) { sum += grid[i][j]; } double currentAverage = sum / grid[i].length; System.out.println("Average of row " + (i+1) + " = " + currentAverage); // 比较并更新最大平均值与对应行索引 if (currentAverage > maxAverage) { maxAverage = currentAverage; maxRowIndex = i; } } // 返回平均最高的行 return grid[maxRowIndex]; }
额外说明
- 边界处理:加入了空数组判断,避免空指针异常
- 多行同最大值:如果有多个行平均值相同且都是最高,代码会返回第一个遇到的行;若需要返回所有最高行,可改为返回
List<int[]>类型 - 变量作用域优化:将
sum放在循环内初始化,避免重复重置,代码更简洁
内容的提问来源于stack exchange,提问作者MazaPan616
相关产品推荐
相关产品推荐

