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

Java 添加两个不同大小的多维数组,java,eclipse,multidimensional-array,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 {

我正在学习
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");
        }
    }
}
inta[][]={{211,21,32,34},{20,21};
int b[][]={{31,42},{45,21};
公共静态无效添加(整数x[]],整数y[]]{
int ar=0,al=0,i=0;
如果(x.length>=y.length){
ar=x.长度;
}否则{
ar=y.长度;
}
如果(x[i].length>=y[i].length){
al=x[i]。长度;
}否则{
al=y[i]。长度;
}
int s[][]=新的int[ar][al];

对于(i=0;i而言,问题在于该代码:

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;
}
在这两个矩阵之间取较大的一个,这意味着无论哪一个较小,只要您尝试索引较大的行/列,就会抛出
ArrayIndexOutofBoundsCeptions

应翻转逻辑;取以下长度中的最小值:

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;
}

if(x.length)错误是什么?将stacktraceWelcome上载到Stack Overflow!请查看,并通读,尤其是其中一个数组比另一个数组大。变量
ar
al
正在用max(数组的行)和max(数组的列)初始化现在告诉我,在这个例子中,al的值是4,如何访问第二个数组中任何行的第四列,这就是为什么会得到indexoutofbound。。