-4

各行の最初の列の値を 2 番目の列の値で乗算し、これらの積の総和を作成する配列を宣言しました。以下のコードリストを試しましたが、何が欠けていますか

public class Arrays {
    public static void(String[] args) {

        int array_x[][]={{9,8},{2,17},{49,4},{13,119},{2,19},{11,47},{3,73}};
        int sum = 0;

        for (int i = 0; i < array_x.length; i++) {
            for (int j = 0; j < array_x.length; j++) {
                array_x[i][j] = i * j;
                System.out.println("\n" + array_x[i][j])
            }
        }

    }
}

出力は 9*8=72 2*17=34 などのようになり、結果全体を 72+34+... として合計します。

4

2 に答える 2

7

あなたが書いたコードにはいくつかの問題がありました。たとえば、開いたブラケットと閉じたブラケットの数が異なるためにコンパイルされない、関数名を指定しなかった(メインと想定)、;があったなどです。ない。ただし、最大の問題は論理的な問題でした。やりたいことを実行するために必要なのは1つだけです。配列には2つの列しかないため、配列の2番目の次元のインデックスは0と1になることがわかります。また、積を合計に累積する必要があります。代わりに、合計を0に初期化し、更新しませんでした。最後に、命令array_x [i] [j] = i * j値の代わりにインデックスを乗算するため、結果は期待どおりではなく、この結果はarray_xに配置されます。これは、入力配列を実際に変更する必要がないため、間違った場所です。

class Arrays{

    public static void main(String[] args){

        int array_x[][]={{9,8},{2,17},{49,4},{13,119},{2,19},{11,47},{3,73}};

        int sum=0;

        for(int i=0;i<array_x.length;i++) {
            int prod = array_x[i][0] * array_x[i][1];
            System.out.println("\n"+prod);
            sum += prod;
        }

        System.out.println("Final: " + sum);
    }
}

最初に書いたコードは、実際には掛け算の九九を作成するために必要なものですが、その場合は、行と列の数が等しい配列が必要です。

于 2013-02-09T20:08:08.617 に答える
0
public class Arrays {
    public static void main (String[] args) {

        int array_x[][]={{9,8},{2,17},{49,4},{13,119},{2,19},{11,47},{3,73}};
        int multiply[] = new int[7];


        for (int i = 0; i < array_x.length; i++) {

            multiply[i] = array_x[i][0] * array_x[i][1];


        }
        int sum = 0;
        for(int i = 0; i < multiply.length; i++)
        {

        System.out.println(array_x[i][0] + "*" + array_x[i][1] + "=" + multiply[i]);
        sum += multiply[i];

        }
        System.out.println("Sum:" + sum);

    }
}
于 2013-02-09T20:11:58.043 に答える