我正在学习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");
}
}
}
答案 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;
}