我想将两个矩阵加在一起并返回一个新矩阵。示例: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;
}
因为在创建b.length
中使用了matrix
。
这意味着使用您的数据就像int[][]matrix = new int[2][2];
使用此int[][]matrix = new int[a.length][a[0].length];
这里是问题
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];