2017-12-02 1 views
0

자바의 행렬에서 Major 대각선의 합계를 찾아야합니다. 내 프로그램은 1x2 및 2x2와 같은 행렬에서 작동하지만 행이 열, 즉 3x2보다 커지면 내 코드가 범위를 벗어난 예외를 throw합니다. 내가 고칠 수있는 방법이 있습니까? 그들은 항상 코드에서 같은 값을 갖고 있기 때문에대각선 행렬의 합 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 둘 필요가 없습니다. ik보다 작은 경우 때문에

따라서, i < k && j < 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의 원래 코드에 가능한 한 적은 변경을 가하고 싶었습니다. 필자가 대답의 텍스트에서 지적한 점을 설명하기에 충분합니다. –

관련 문제