어떻게 2 차원 배열을 복사 자바의 열 합계를 저장하는 새 행을 추가 할 수 있습니까?

Mckinsley 아폴론 :

기본적으로 I는 2 개 차원 어레이를 수신하는 별도의 열을 추가하고 열 저장 이전에 생성 된 여분의 행에서 각 열의 결과들의 합을 계산하는 기능을 갖는다. 여기 내 코드는 다음과 같습니다

public static int[][] sum(int[][] array) {
    int tempArray[][] = new int[array.length + 1][array[0].length];

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

        tempArray[tempArray.length][column] = total;

    }

    return tempArray;
}

나는 결과를 인쇄하는 for 루프를 실행할 때 그래서 함수를 참조 어떤 이유에 대한 ArrayIndexOutOfBounds의 오류가 발생합니다. 나는 내 논리가 정확한지 생각하지만 난 그것을 작업 할 수없는 것. 좀 더 문맥 배열의 값은 사용자에 의해 입력된다. 누구든지 대답합니다 감사합니다!

메릴랜드 골람 라흐만 Tushar :

더 라인 아래에 배열의 행보다 인덱스에 액세스하기 때문에 당신은 ArrayIndexOutOfBounds을 얻고있다 :

tempArray[tempArray.length][column] = total;

문제를 해결할 라인을 다음으로 교체 :

tempArray[tempArray.length - 1][column] = total;

당신의 합계 논리가 버그가 그러나 당신의 코드는 여전히 작동하지 않습니다. 다음 라인으로 총을 계산한다.

total += tempArray[row][column];

하지만 당신의 tempArray은 값하지만 0을 가지고 있지 않습니다. 당신은 다음과 같은 배열의 값으로 tempArray을 시작하십시오이 메이크업을 해결하려면

int tempArray[][] = new int[array.length + 1][array[0].length];

for(int i = 0; i < array.length; i++) {
    for(int j = 0; j < array[0].length; j++) {
        tempArray[i][j] = array[i][j];
    }
}

희망이가 문제를 해결하는 것입니다. 코딩 해피!

추천

출처http://43.154.161.224:23101/article/api/json?id=280096&siteId=1