为什么添加两个二维数组时索引超出范围?

问题描述 投票:-1回答:2

我想将两个矩阵加在一起并返回一个新矩阵。示例:matrixAdd({{1、2、3},{4、4、4}},{{5、5、6},{0,-1、2}})的预期收益为:{{6、7 ,9},{4,3,6}}。我不明白为什么我的代码会生成超出范围的索引异常...顺便说一句,作为参数传递的数组将始终具有相同的尺寸,因此我不必担心。

public static int[][] matrixAdd(int[][]a, int[][]b){    
    int[][]matrix = new int[a.length][b.length];
    for(int r=0; r<a.length; r++){
        for(int c=0; c<a[r].length; c++){
            matrix[r][c] = a[r][c] + b[r][c];
        }
    }
    return matrix;
}
java arrays multidimensional-array
2个回答
1
投票

因为在创建b.length中使用了matrix

这意味着使用您的数据就像int[][]matrix = new int[2][2];

使用此int[][]matrix = new int[a.length][a[0].length];


0
投票

这里是问题

int[][]matrix = new int[a.length][b.length];

矩阵a和b的大小均为2X3。因此,他们创建的新矩阵的大小也将为2X3。但是声明的矩阵matrix的大小为2X2,因为a.length和b.length都返回2。

正如您提到的矩阵维始终相同,您可以执行以下操作。

int[][]matrix = new int[2][3];
© www.soinside.com 2019 - 2024. All rights reserved.