我试图在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输出向量,每个值都是相同的数字。难道我做错了什么?或者它可能是数据问题?
答案 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));