2011-05-19 131 views
1

我只是寫了一小段代碼來添加矩陣。到目前爲止,我已經寫的方法是:添加矩陣Java

public static int[][] matrixAdd(int[][] A, int[][] B) 
{ 
    int[][]C = new int[A.length][A[0].length]; 

    for(int i =0; i < A.length; i++) 
    { 
    for(int j=0; j < A[i].length;j++) 
    { 
    C[i][j] = A[i][j] + B[i][j]; 
    } 
} 


return C; 
} 

這個代碼不正確添加矩陣,但我得到一個索引越界異常,如果傳遞給這個方法的矩陣是空的。這個錯誤顯然與'C'的大小被延遲的行有關。我的邏輯有什麼問題?

+2

確定A和B具有相同的尺寸?也許你也應該驗證一下。 – Marcelo 2011-05-19 23:07:36

+1

這是開始學習如何使用調試器的好機會。嘗試在int C [] []'行設置斷點,並在拋出AIOOBE時檢查各種值。 – 2011-05-19 23:08:19

回答

0

如果矩陣是空的,聲明

int[][]C = new int[A.length][A[0].length]; 

將拋出OutOfBoundsException因爲矩陣A的位置0是無效的。

完成兩項檢查:

if ((A.length < 0) || (A[0].length < 0)) return B; 
if ((B.length < 0) || (B[0].length < 0)) return A; 
1

假設A和B都是等維矩陣,我認爲它會在A[0].length失敗,因爲你沒有檢查邊界(即空白)。

有一點需要記住的是,Java中的高維數組只是數組的數組,因此它應該按照原樣處理。