2017-12-02 208 views
0

我需要在Java中找到矩陣中主對角線的總和。我的程序適用於矩陣(如1x2和2x2),但是當行數大於列數時(即3x2),我的代碼會拋出一個超出界限的異常。有什麼方法可以解決它嗎?主對角線矩陣的總和JAVA

// sum of major diagonal in matrix 
public static int majorDiagonal(int[][] array){ 
    int sumMD = 0; 
    for (int i = 0, j = 0, k = array.length; i < k && j < k; i++, j++) { 
     sumMD += array[i][j]; 
    } 
return sumMD; 
} 

回答

1

你並不需要同時ij,因爲他們總是在你的代碼相同的值。

因此,您的延續條件i < k && j < k沒有太大意義,因爲如果i小於k,那麼j也會如此。

將for循環的延續條件更改爲i < k && i < array[0].length。這將檢查i是否小於列數和行數,這是您需要的條件。

for (int i = 0, k = array.length; i < k && i < array[0].length; i++) { 
    sumMD += array[i][i]; 
} 
+0

您可以刪除'k = array.length;我 TheQuestioner

+0

我可以,是的。但是我想盡可能少地改變OP的原始代碼 - 這足以證明我在答案文中提出的觀點。 –