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

Java如何从二维char数组中提取指定列并解决数组越界异常

问题原因

你使用的isbns是8行13列的二维数组,第一维(行)长度为8,第二维(每行的列)长度为13。你编写的方法存在两个核心逻辑错误:

  • 存储提取结果的数组长度错误取了列数arr[0].length(值为13),但提取单列时,每一行对应一个结果元素,结果数组长度应该等于行数arr.length(值为8)
  • 循环边界用了错误的结果数组长度13,导致访问arr[i]时i超过了行的最大合法索引7,触发数组索引越界异常
修复方案

优化后的方法直接返回char[]避免不必要的装箱,同时增加参数合法性校验避免异常:

public static char[] getColumn(char[][] arr, int columnIndex) {
    // 空参数校验
    if (arr == null || arr.length == 0) {
        return new char[0];
    }
    // 列索引合法性校验
    if (columnIndex < 0 || columnIndex >= arr[0].length) {
        throw new IllegalArgumentException("列索引超出合法范围");
    }
    // 结果数组长度等于总行数
    char[] column = new char[arr.length];
    // 循环边界为总行数,遍历所有行提取指定列元素
    for (int i = 0; i < arr.length; i++) {
        column[i] = arr[i][columnIndex];
    }
    return column;
}

调用示例:如果要提取第3列(索引从0开始计数),直接调用getColumn(isbns, 2)即可得到对应列的所有元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:07