将2d ArrayList与向量相乘

时间:2014-01-20 07:59:48

标签: java multidimensional-array multiplication

我试图在java中对mXn矩阵和mX1向量进行乘法运算。为此,我使用2d arraylist作为矩阵,使用ArrayList作为向量。我的代码如下:

    ArrayList<Double> newList = new ArrayList<Double>();
    double sum = 0;

    for (int i = 0; i < eigenMatrix.size(); i++) {//eigenMatrix 2d ArrayList
        for (int j = 0; j < eigenMatrix.get(0).size(); j++) {

            sum +=  eigenMatrix.get(i).get(j)*imgMean.get(j); // imgMean an ArrayList
            System.out.println(sum+ " "+ i);
        }

        newList.add(sum); sum = 0;

    }
    System.out.println(newList);

我遇到sum变量问题。最后,我有一个mx1输出向量,每个值都是相同的数字。难道我做错了什么?或者它可能是数据问题?

2 个答案:

答案 0 :(得分:1)

错误是您在数组中引用相同的变量sum,因此数组的所有元素都指向相同的结果。

快速修复:

添加newList.add(new Double(sum));而不是newList.add(sum);

您将为每个结果创建新的Double

答案 1 :(得分:1)

HY,   您正在将原始数据类型的变量添加到newList中。这是不正确的

  

double sum = 0; newList.add(总和); sum = 0;

     

您已声明Double数据类型的ArrayList   ArrayList newList = new ArrayList();

但是你正在补充 newList.add(sum)其中sum是long的原始数据类型。

修复

您必须为每个乘法结果插入Double数据类型的对象。

  

newList.add(new Double(sum));