-4

我已经声明了一个数组,我想将第一列的值乘以每行第二列的值,并创建这些乘积的总和。我已经尝试了下面的代码清单,我错过了什么

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

你写的代码有几个问题,包括它不能编译,因为你有不同数量的左括号和右括号,你没有指定函数名(我认为它是 main)并且有一个; 失踪。然而,最大的问题是一个合乎逻辑的问题:你只需要一个for来做你想做的事。您知道数组第二维的索引将是 0 和 1,因为正如您所说,数组只有两列。此外,您需要将产品累积到sum中,而不是将sum初始化为 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 回答