2016-06-08 32 views
-4

我正在學習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

什麼是錯誤,然後呢? – Gendarme

+0

上傳你的堆棧跟蹤 –

+0

歡迎來到Stack Overflow!請參考[遊覽],四處看看,並仔細閱讀[幫助],特別是[*我如何提出一個好問題?](/ help/how-to-ask) –

回答

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每當你嘗試索引較大的行/列。

邏輯應該翻轉;採取這些長度的最小值:

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