どのように私は2次元配列をコピーして、Javaでの列の合計を保存するために新しい行を追加することができますか?

Mckinsleyアポロン:

基本的に私は、二次元アレイを受け取る余分な行を追加し、列格納以前に作成された余分な行の各個々の列の結果の和を計算する機能を有しています。ここに私のコードは次のとおりです。

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は、任意の値が、ゼロを持っていません。このメイクを解決するために必ず、アレイの次のような値で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=280098&siteId=1