在java中乘以2d数组

时间:2013-02-09 19:53:57

标签: java

我已经声明了一个数组,我希望将第一列的值乘以每行第二列的值,并创建这些产品的总和。我已经尝试了下面的代码清单,我缺少什么

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 + ....

2 个答案:

答案 0 :(得分:6)

你写的代码有几个问题,包括它不会编译的事实,因为你有不同数量的打开和关闭括号,你没有指定函数名称(我假设是主要的)并且有; 缺少。然而,最大的问题是合乎逻辑的:你只需要一个来做你想做的事情。你知道数组第二维的索引将是0和1,因为正如你所说的那样,数组只有两列。此外,您需要将产品累积到 sum ,而是将 sum 初始化为0并且从不更新它。最后,指令 array_x [i] [j] = i * j 将索引与值相乘,因此结果不是您所期望的,并且此结果将被放入 array_x < / strong>,这是错误的地方,因为你真的不需要改变输入数组。

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);
    }
}

您最初编写的代码实际上是构建multiplication table所需的代码,但在这种情况下,您需要一个具有相同行数和列数的数组。

答案 1 :(得分: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);

    }
}