2012-02-16 4 views
1

나는 자바를 공부하고있다. 그리고 나는 그것이 마술 광장인지 아닌지를 반환하는 2D 배열을 검사하기위한 코드를 만들고 싶었습니다.Java에서 nxn 행렬의 각 열을 합하는 방법은 무엇입니까?

이렇게하려면 여러 가지 메소드를 작성해야했고 그 중 하나는 각 열의 요소가 모두 같은지 확인하기위한 것이 었습니다. 나는 행에 대해 할 수 있지만, 나는 컬럼에 대해 그렇게하려고했을 때 약간 혼란 스러웠다. 그리고 내 친구는 모든 행의 합계가 같은지 확인하는 방법과 거의 같다고했습니다. 행에 대한 내 메소드는 아래와 같습니다.

public static boolean rowSumsOK(int arr[][], int total) { 
    boolean a = false; 
    total = sumOneRow(arr); 
    int x=0; // this will be counted sum for each rows 

    for (int i=0; i<arr.length; i++){ 
     for (int j=0; j<=arr.length; j++){ 
      x = x + arr[i][j]; 
     } 
     if(x != total){ 
      a = false; 
      break; 
     } 

     else 
      a = true; 
    } 

    return a; 
} 

그는 열에 대한 그 일을 위해 그 방법 변경 제안은 다음과 같습니다

 x = x + arr[j][i]; 

나는 아직도 이것에 대해 조금 혼란 스러워요. 이 방법에 대해 설명해 주시겠습니까? 아니면 저에게 다른 방법을 보여줄 수 있습니까?

+2

열을 요약한다 당신에게 주어진 제안을. 만약 당신이 그것에 대해 혼란스러워한다면 배열이 무엇인지 그리고/또는 어떻게 루프가 작동하는지에 대해 더 공부할 것을 제안합니다. – Danny

+0

나는 그 일이 어떻게 일어 났는지는 모르지만 나는 여기에 글을 올린 후 내가 말한 것을 알아 냈다. 어쩌면 나는 그가 의미하는 것을보기에 충분할만큼 집중하지 않았을 것이다. 감사합니다. –

답변

2
public static boolean columnSumsOK (int arr[][], int total) 
    { 
     for (int j = 0; j < arr [ 0 ].length; j++) 
     { 
      int sum = 0; 
      for (int i = 0; i < arr.length; i++) 
       sum = sum + arr [ i ] [ j ]; 
      if (sum != total) 
       return false; 
     } 
     return true; 
    } 
+0

답장을 보내 주셔서 감사합니다. 깨끗하고 단순 해 보입니다. –

+0

Timur, 내 코드를 다시 확인하십시오. 일부 인덱스 오류가 있습니다. 각 열 요소의 합계를 하나씩 계산 한 다음 해당 열의 합계를 "total"매개 변수와 비교하는 방식으로 작동합니다 메서드는 즉시 false를 반환하고 그렇지 않으면 평가를 계속합니다. – Juvanis

+0

안녕하세요, 죄송합니다. 나는 당신의 코드를 다시 읽고 요점을 얻었다. 명성 (y) –

0

열 i에있는 요소의 totalSum을 갖는 다른 배열 (columnTotal)을 유지합니다. 그런 다음 한 번에 한 열씩 열을 반복하고 해당 열의 행을 합합니다. 기본적으로 행 합계를위한 코드이지만 안쪽과 바깥 쪽 루프가 반대로되어 있습니다. 이런 식으로 뭔가를 시도 :

int columnTotal[] = new int[array.length]; 

for(int column= 0; column< array.length; column++) 
{ 
    columnTotal[column] = 0; 
    for(int row= 0; row < array.length; row++) 
    { 
     columnTotal[column] += array[row][column]; 
    } 
} 
+0

나는 그것이 columnTotal [column] + = array [row] [column]이어야한다고 생각합니다. – vjain27

+0

예, 오타입니다. 내 실수. 코드를 수정했습니다. – Oleksi

관련 문제