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

如何按列遍历列长不固定的二维数组且避免数组下标越界异常

错误原因

你提供的代码触发数组越界的核心问题是下标遍历逻辑不匹配:

  • v.length为二维数组的行数(示例中共有5行),外层循环以v.length作为上限,相当于把行数直接当作最大列数使用,当列下标超过某一行的实际长度时,访问v[j][i]就会越界。
  • 内层循环的边界取v[i].length(第i行的长度),但内层循环变量j是行下标,二者逻辑完全不对应。

实现思路

  1. 先遍历所有行,计算出最长行的长度,即最大列数
  2. 外层循环遍历每一列索引,从0到最大列数-1
  3. 内层循环遍历每一行,仅当当前行的长度大于当前列索引时,取出对应元素
  4. 按要求拼接元素,用逗号分隔

代码实现

public class Main {
    public static void main(String[] args) {
        // 修正原数组初始化的语法错误
        int[][] v = {{1,2,3}, {4,5}, {6,4,3}, {1}, {7,8,9}};
        // 计算最大列数
        int maxCol = 0;
        for (int[] row : v) {
            maxCol = Math.max(maxCol, row.length);
        }
        // 按列遍历拼接结果
        StringBuilder result = new StringBuilder();
        for (int col = 0; col < maxCol; col++) {
            for (int row = 0; row < v.length; row++) {
                if (col < v[row].length) {
                    if (result.length() > 0) {
                        result.append(",");
                    }
                    result.append(v[row][col]);
                }
            }
        }
        // 输出结果
        System.out.println(result.toString());
    }
}

运行上述代码将直接输出你需要的结果:1,4,6,1,7,2,5,4,8,3,3,9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:15:11