2011-02-23 75 views
0
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

您應該檢查(pc.get(i))[j]的內容。 – 2011-02-23 09:00:58

+0

已檢查。表格中填充了值,因爲沒有劃分,ony第一行就像它應該是 – Ilya 2011-02-23 09:13:57

+0

更新您的問題添加檢查的內容。 – 2011-02-23 09:30:07

回答

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]); 
} 
+0

玉孫玉米,我愛你! <3 – Ilya 2011-02-23 11:11:33

0

我強烈懷疑你的問題在別的地方。我看不到爲什麼(pc.get(i))[j]/=temp[j];只適用於i == 1。也許在填寫pc列表的方式或您正在閱讀的方式中存在問題。

+0

如果數組除了index == 1以外都是相同的,那麼這應該是預期的行爲。 – Erik 2011-02-23 08:51:19

+0

我不知道會發生什麼事......我只能看到師沒有生效。也嘗試沒有列表 - 只使用雙打數組。同樣的事情 – Ilya 2011-02-23 08:57:40

+0

Erik,我沒有明白你的意思 – Ilya 2011-02-23 08:58:40

0

你確定問題出在那裏嗎?

嘗試在修改之前和之後打印pc,看看它是否包含您實際上期望在pc中的內容;

快速便捷方法:

public static void printList(List<double[]> list) 
{ 
    for (double[] arr : list) 
    { 
     // import java.util.Arrays; 
     System.out.println(Arrays.toString(arr)); 
    } 
}