public static List<double[]> pc = new LinkedList();
public void fillTable1() {
int index = getWorstI();
double[] temp = pc.get(index);
for(int n=0;n<4;n++)
System.out.println( temp[n]);
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
(pc.get(i))[j]/=temp[j]; // values change only in object pc.get(1)! O_o
}
for(int i=0;i<4;i++)
Main.fillTheRow(table1, pc.get(i), i);
}
答案 0 :(得分:0)
我强烈怀疑你的问题出在其他地方。我认为没有理由(pc.get(i))[j]/=temp[j];
仅适用于i == 1
。也许填充pc
列表的方式或者您正在阅读它的方式存在问题。
答案 1 :(得分:0)
你确定问题存在吗?
尝试在修改之前和之后打印电脑,看看它是否包含您实际期望的电脑内容;
快速方便的方法:
public static void printList(List<double[]> list)
{
for (double[] arr : list)
{
// import java.util.Arrays;
System.out.println(Arrays.toString(arr));
}
}
答案 2 :(得分:0)
假设只有pc.get(0)才能正确更改该值。
变量temp和pc.get(0)是对同一对象的引用。 因此“(pc.get(0))[j] / = temp [j]”的结果将全部为“1”。 因此,之后的所有计算变为(pc.get(i))[j] / 1。
更改如下,不作为参考。
double[] temp = new double[pc.get(index).length]; // new array
for(int n=0;n<4;n++) {
temp[n] = pc.get(index)[n]; // copy content
System.out.println(temp[n]);
}