Java中如何获取二维数组每列的最大值?
获取Java二维数组每列的最大值
没问题,我懂你现在的困扰——原来的代码是按行遍历找最大值,要实现按列取最大值,咱们只需要调整一下循环的遍历顺序就行,思路其实很简单:
核心思路
原来的循环外层是行索引,内层是列索引;现在要反过来,外层遍历列索引,内层遍历所有行的对应列元素,这样就能逐个找出每列的最大值了。
实现代码
这里给你写了完整可运行的代码,完全符合你的需求:
public class ColumnMaxExample { public static void main(String[] args) { int[][] test = {{3, 9, 3, 5}, {4, 19, 4, 9}, {2, 10, 5, 6}}; // 确定二维数组的列数(假设所有行的列数一致) int columnCount = test[0].length; int[] answer = new int[columnCount]; // 外层循环:遍历每一列 for (int col = 0; col < columnCount; col++) { // 初始化当前列的最大值为第一行的对应列元素 int currentMax = test[0][col]; // 内层循环:遍历所有行的当前列元素 for (int row = 1; row < test.length; row++) { if (test[row][col] > currentMax) { currentMax = test[row][col]; } } // 将当前列的最大值存入结果数组 answer[col] = currentMax; } // 打印验证结果 for (int maxVal : answer) { System.out.print(maxVal + " "); // 输出:4 19 5 9 } } }
代码说明
- 首先获取列数
columnCount,因为结果数组的长度和列数一致; - 外层循环
col从0到列数-1,代表当前处理的列; - 内层循环
row从第1行开始(已经用第0行的元素初始化了最大值),逐个比较当前列的所有行元素,更新最大值; - 最后把每列的最大值依次存入
answer数组,就得到了你想要的结果。
额外提示
如果你的二维数组可能存在行长度不一致或者空数组的情况,记得加一些空指针判断,比如先检查test != null、test.length > 0和test[0] != null,避免运行时出错。
内容的提问来源于stack exchange,提问作者character
相关产品推荐
相关产品推荐

