我需要在Java中找到矩阵中主要对角线的总和。我的程序适用于矩阵,如1x2和2x2,但当行变得大于列,即3x2时,我的代码会抛出一个超出界限的异常。有什么方法可以解决它吗?
// 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;
}
答案 0 :(得分:1)
您不需要i
和j
,因为它们在您的代码中始终具有相同的值。
因此,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];
}