数组的JAVA异常

数组的JAVA异常,java,arrays,exception,Java,Arrays,Exception,我有一种方法,它将二维数组的两个实例相加,并将总和存储在一个新数组中,两个数组必须具有相同的大小,例如(相同的行数和列数),否则它将引发我定义的异常。我的方法是仅当第一个数组具有不同的行数而不是列数时才会引发异常。例如,仅当我传递这些数组时才会引发异常:a[4][4]b[5][4],而不是这些数组:a[4][5]b[4][5],有人能解释发生了什么吗?我把异常抛出了正确的方法 public int[][] add(int[][] a, int[][] b) throws Incompatible

我有一种方法,它将二维数组的两个实例相加,并将总和存储在一个新数组中,两个数组必须具有相同的大小,例如(相同的行数和列数),否则它将引发我定义的异常。我的方法是仅当第一个数组具有不同的行数而不是列数时才会引发异常。例如,仅当我传递这些数组时才会引发异常:a[4][4]b[5][4],而不是这些数组:a[4][5]b[4][5],有人能解释发生了什么吗?我把异常抛出了正确的方法

public int[][] add(int[][] a, int[][] b) throws IncompatibleArgumentsException {
    int[][] sum = new int[a.length][b.length];

    if (a.length == b.length) {
        System.out.println("The Sum of the arrays is: ");
        System.out.println("  --------------- ");
        for (int row = 0; row < a.length; row++) {
            for (int col = 0; col < b.length; col++) {
                sum[row][col] = a[row][col] + b[row][col];

                System.out.println(" | " + a[row][col] + "  +  " + b[row][col] + "  =  " + sum[row][col] + " | ");
                System.out.println("  --------------- ");
            }
        }
    } else {
        throw new IncompatibleArgumentsException("Arrays have different size");
    }

    return sum;
}

你的支票错了。你应该在高层做什么:

if (a.length != b.length || a[0].length != b[0].length) {
  throw new IncompatibleArgumentsException(...);
}

a.length
”给出行数,因为二维数组本质上是一维数组的数组,所以a.“length”只给出“a”中的一维数组数。要匹配列数,您需要找出
a
的单个一维数组中有多少个元素,因此
a[0]。length
(其中a[0]=a中的第0个一维数组)将给出列数。

如果a.length!=a[0]。长度。因此,您甚至没有比较两个外部阵列的大小。仅当第一个数组的行数等于其第一行的列数时。您需要比较两个数组的行数,以及两个数组所有行的元素数。我也不明白为什么结果数组被初始化为new int[a.length][b.length]。@controlaltdel但它返回的是和,这里是控制台结果:数组的和是:---------------1+1=2------------------------@Khaled我很抱歉。我在想“第二个案例不应该引起异常……”但这不是我写的。在任何情况下,它似乎都与你所做的相符found@controlAltDel请注意,我已经更新了我的if声明。谢谢你,先生,我做到了。还有一个问题,你能建议我如何使我传递的数组更具动态性?例如,传递多个列和行,并使用for循环或任何更好的方法设置它们的值?@Khaled,你可以发布一个新问题
if (a.length != b.length || a[0].length != b[0].length) {
  throw new IncompatibleArgumentsException(...);
}