添加两个不同大小的多维数组

时间:2016-06-08 14:19:37

标签: java eclipse multidimensional-array

我正在学习Java一周,这个程序在add方法中给我一个错误。我找不到原因?

int a[][]= {{211,21,32,34},{20,21}};
int b[][]={{31,42},{45,21}};

public static void add(int x[][], int y[][]){
    int ar=0,al=0,i=0;

    if(x.length>=y.length) {
        ar=x.length;
    } else {
        ar=y.length;
    }
    if(x[i].length>=y[i].length) {
        al=x[i].length;
    } else {
        al=y[i].length;
    }
    int s[][] = new int[ar][al];
    for(i=0; i<ar; i++) {
        for(int j=0; j<al; j++) {
            s[i][j]=x[i][j]+y[i][j];
        }
        for(i=0; i<ar; i++) {   
            for(int j=0; j<al; j++) {
                System.out.print(s[i][j]+" ");
            }
            System.out.print("\n");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题在于此代码:

if(x.length>=y.length) //!!PROBLEM!!
{
    ar=x.length;
}
else{
    ar=y.length;
}
if(x[i].length>=y[i].length) //!!PROBLEM!!
{   al=x[i].length;

}
else{
    al=y[i].length;
}

你正在使用这两个矩阵之间大小的更大的,这意味着每当你尝试索引较大的行/列时,无论哪个较小都会抛出ArrayIndexOutOfBoundsExceptions。 / p>

逻辑应该翻转;采取这些长度的最小值:

if(x.length <= y.length) //FIXED
{
    ar=x.length;
}
else{
    ar=y.length;
}
if(x[i].length <= y[i].length) //FIXED
{
    al=x[i].length;
}
else{
    al=y[i].length;
}