You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中按列获取二维数组的最大与最小元素(已实现行方式)

按列获取二维数组的最大和最小元素

你已经成功实现了按行遍历二维数组并找出每行的最大、最小值,这个思路很清晰!现在要实现按列操作,核心是把遍历顺序调换过来:先遍历列,再遍历每一列对应的所有行,下面一步步给你讲解。

先回顾你的行实现代码

你写的按行求最值的代码如下:

public class Column { 
    public static void main(String[] args) { 
        int[][] data = { 
            { 3, 2, 5,-45 }, 
            { 1, 4, 4, -8 }, 
            { 9, 6, -100, -2 }, 
            {-10, 3, 1, -2 }
        }; 
        for (int row = 0; row < data.length; row++) { 
            int large = data[row][0], small = data[row][0]; 
            for (int col = 0; col < data[row].length; col++) { 
                if (large < data[row][col]) { 
                    large = data[row][col]; 
                }
                if (small > data[row][col]) { 
                    small = data[row][col]; 
                } 
            } 
            System.out.println("largest values:" + large); 
            System.out.println("smallest values:" +small); 
        } 
    } 
}

输出结果:

largest values:5 smallest values:-45
largest values:4 smallest values:-8
largest values:9 smallest values:-100
largest values:3 smallest values:-10

按列求最值的实现思路

要按列处理,需要注意以下几点:

  • 首先确定数组的列数:如果是规整的二维数组(每行长度相同),可以直接用data[0].length;如果是不规则数组,需要先做边界判断(后面会提)。
  • 外层循环遍历列索引,内层循环遍历每一列对应的所有行索引。
  • 每列的初始最大、最小值要设为该列第一行的元素(data[0][col]),然后和该列其他行的元素逐一比较。

按列求最值的完整代码

public class ColumnMaxMin {
    public static void main(String[] args) {
        int[][] data = {
            { 3, 2, 5, -45 },
            { 1, 4, 4, -8 },
            { 9, 6, -100, -2 },
            {-10, 3, 1, -2 }
        };

        // 假设是规整的二维数组,列数为第一行的长度
        int columns = data[0].length;

        for (int col = 0; col < columns; col++) {
            // 初始化当前列的最大、最小值为该列第一行的元素
            int colMax = data[0][col];
            int colMin = data[0][col];

            // 遍历该列的所有行(从第二行开始,因为第一行已经作为初始值)
            for (int row = 1; row < data.length; row++) {
                // 更新最大值
                if (data[row][col] > colMax) {
                    colMax = data[row][col];
                }
                // 更新最小值
                if (data[row][col] < colMin) {
                    colMin = data[row][col];
                }
            }

            // 输出当前列的结果
            System.out.println("第" + (col + 1) + "列:");
            System.out.println("  最大值:" + colMax);
            System.out.println("  最小值:" + colMin);
        }
    }
}

代码输出结果

运行这段代码后,输出会是:

第1列:
最大值:9
最小值:-10
第2列:
最大值:6
最小值:2
第3列:
最大值:5
最小值:-100
第4列:
最大值:-2
最小值:-45

额外说明(处理不规则二维数组)

如果你的二维数组每行长度不一样(比如有的行多一列,有的行少一列),需要先处理边界情况:遍历列的时候,要确保当前行的列索引不越界。可以修改内层循环的判断条件,比如:

for (int row = 0; row < data.length; row++) {
    // 先判断当前行是否有该列的元素,避免索引越界
    if (col < data[row].length) {
        if (data[row][col] > colMax) {
            colMax = data[row][col];
        }
        if (data[row][col] < colMin) {
            colMin = data[row][col];
        }
    }
}

这样就能避免数组索引越界的问题啦~

内容的提问来源于stack exchange,提问作者Gokul Kannan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:51:23