我只是在编写一小段用于添加矩阵的代码。到目前为止,我写的方法是:
public static int[][] matrixAdd(int[][] A, int[][] B)
{
int[][]C = new int[A.length][A[0].length];
for(int i =0; i < A.length; i++)
{
for(int j=0; j < A[i].length;j++)
{
C[i][j] = A[i][j] + B[i][j];
}
}
return C;
}
此代码确实正确添加了矩阵,但是如果传递给此方法的矩阵为空,则会得到索引超出范围的异常。该错误显然与“C”的大小被延迟的线有关。我的逻辑出了什么问题?
答案 0 :(得分:1)
假设A和B都是具有相同维度的方阵,我认为它会在A[0].length
中失败,因为你没有检查边界(即空虚)。
要记住的一点是,Java中的高维数组只是数组的数组,因此它应该按原样处理。
答案 1 :(得分:0)
如果矩阵为空,则声明为
int[][]C = new int[A.length][A[0].length];
将抛出OutOfBoundsException,因为矩阵A的位置0无效。
两次检查:
if ((A.length < 0) || (A[0].length < 0)) return B;
if ((B.length < 0) || (B[0].length < 0)) return A;