我是Java的初学者。
在练习中,我应该编写一个方法,其中必须添加两个2D数组。我的问题是,如果数组A和B为空,我的解决方案不会返回空数组C,而是会产生ArrayIndexOutOfBoundsException。
为清楚起见,我将在下面发布问题描述:
“编写一个名为matrixAdd
的方法,该方法接受一对二维整数数组作为参数,将这些数组视为2D矩阵并将其相加,返回结果。两个矩阵A和B的总和为矩阵C,其中对于第i行和第j列,每行Cij = Aij + Bij。您可以假设作为参数传递的数组具有相同的维数。”
到目前为止,我已经提出了以下解决方案:
public static int[][] matrixAdd(int[][] a, int[][] b) {
int[][] c = new int[a.length][a[0].length];
for (int row = 0; row < a.length; row++) {
for (int col = 0; col < a[0].length; col++) {
c[row][col] = a[row][col] + b[row][col];
}
}
return c;
}
如果A和B都填充了值,这是可行的,但是如果A和B为空,我得到ArrayIndexOutOfBoundsException --Edit:第2行-。应该返回一个空数组。
-编辑: 最早的评论指出,无法访问导致异常的[0] .length。
但是我怎么能声明c的维呢?
即如何在不使用a [0] .length的情况下声明数组c
?
还是我甚至必须在代码中声明c
?
顺便说一句,添加if (a == null || a.length == 0) { return new int[] {}; }
或if (a == null || a.length == 0) { return new int[][]; }
的建议没有用,但感谢您的尝试。