2017-12-02 18 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があまりにもなりますので、したがって、i < k && j < kのあなたの継続条件は、あまり意味がありません。

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;を削除できます。 i TheQuestioner

+0

私はそうすることができます。しかし、私はOPのオリジナルのコードにできるだけ少ない変更を加えたいと思っていました。 –

関連する問題