2017-01-19 4 views
-1

내 코드의 문제점을 이해하려고합니다. 대부분 UR 도움 :)연산자 +는 인수 유형에 대해 정의되지 않았습니다. int, int []

public class lab5 { 
public static void main(String[] args) { 
    int[][] m = new int[5][5]; 

    for (int i = 0; i < m.length; i++) { 
     for (int j = 0; j < m[i].length; j++) { 
      m[i][j] = i + j; 
      System.out.println(m[i][j] + " "); 
     } 
     System.out.println(); 
    } 
    int sum = 0; 
    for (int i = 0; i < m.length; i++) 
     sum = sum + m[i]; **// here i get error "The operator + is undefined for the argument type(s) int, int[]"** 
    double average = sum/m.length; 

    System.out.println("Average value of array element is " + average); 

} 

}

+0

오류 메시지가 표시됩니다. 'int' 값과 * array *을 추가하려고합니다. 이것은 m [i]의 값이 서브 배열이기 때문에 가능합니다. – Andreas

답변

1

m은 2 차원 배열을 평가한다.

m[i]은 1 차원 배열입니다.

+ 인수가 숫자 (sum) 및 1 차원 배열 (m[i])이면 의미가 없습니다.


업데이트

:는 2 차원 배열의 평균을 계산하기 위해, 당신은 루프 두 (중첩)이 필요합니다. 이미 프로그램의 첫 부분에 이미있는 것처럼.

int sum = 0; 
int count = 0; 
for (int i = 0; i < m.length; i++) { 
    for (int j = 0; j < m[i].length; j++) { 
     sum = sum + m[i][j]; 
     ++count; 
    } 
} 
double average = ((double) sum)/count; 

위의 코드는 jagged arrays를 차지하지만, 하지 핸들 integer overflows 않습니다.


여기 당신을 위해 수정 된 숙제 : 시도는 (2 차원 배열은 매트릭스보다는 가변 배열 인 경우이 작업을 수행 할 수 있음) count 변수를 제거 위의 코드를 단순화 할 수 있습니다.

또한 가능한 정수 오버플로를 올바르게 처리하도록하십시오 (힌트 : sum의 유형을 int보다 큰 것으로 변경하십시오).

+0

어떻게 해결할 수 있습니까? 나는 방금 java를 시작했고 정말로 그 일을 정상적으로 수행하는 방법을 모른다. –

+0

의도 한 결과가 무엇인지 설명해 주시겠습니까? 'm' 매트릭스의 모든 항목을 통해 평균을 계산 하시겠습니까? 또는 특정 행의 평균을 원하십니까? 또는 각 행의 평균을 개별적으로 원하십니까? –

+0

일반적으로 2 차원 배열에서 정수 값을 얻으려면 2 개의 인덱스를 제공해야합니다. 예 : 'm [i] [0]'는'sum'에 추가 할 수있는 (배열이 아닌) 숫자를 줄 것입니다. 그러나 프로그램의 의도는 분명하지 않다 ... –

1

배열의 합계를 계산하려면 2 for 루프가 필요합니다. 시험해보기 :