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

Java矩阵转置实现遇IndexOutOfBoundsException问题求助

问题根源

你在transpose方法里犯了一个核心错误:初始化newTranspose时直接传入了原矩阵的data数组,导致新矩阵的行列数和原矩阵完全一致。比如输入的2x3矩阵,新矩阵也会是2x3结构。但转置需要的是3x2矩阵,当循环中j遍历到原矩阵的列索引2时,newTranspose.data[j]会访问第3行,而新矩阵只有2行,直接触发IndexOutOfBoundsException。

修复方案

转置的核心是先构建行列数互换的新数组,再用这个数组初始化Matrix对象,最后完成元素填充:

public Matrix transpose() {
    // 创建转置专用的二维数组:行数=原矩阵列数,列数=原矩阵行数
    int[][] transposedData = new int[numColumns][numRows];
    
    // 遍历原矩阵,将元素赋值到转置数组的对应位置
    for (int i = 0; i < numRows; i++) {
        for (int j = 0; j < numColumns; j++) {
            transposedData[j][i] = data[i][j];
        }
    }
    
    // 用转置后的数组生成新的Matrix实例并返回
    return new Matrix(transposedData);
}
额外说明

原Matrix构造函数的逻辑是正确的,它会根据传入的二维数组自动计算并设置numRows和numColumns,所以无需修改构造方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:36:32