2016-01-13 10 views
0

背景信息:kragarm是由兩種負載(單個力和一個時刻都實現Interface IBelastung)組成的單鏈表。我試圖將對象複製到1d數組(對象)中,根據它們的位置對其進行排序,並將它的屬性(位置,強制和時刻)放入2d數組(verlauf)中。該方法bildeAufDouble()讓你的負荷 這個位置是我的代碼:將列表中的對象轉換爲數組

public double[][] stelleVerlaufDar() { 

    IBelastung[] objekte = new IBelastung[kragarm.anzahlElemente()]; 

    double[][] verlauf = new double[kragarm.anzahlElemente()][3]; 

    IMeinIterator it = kragarm.iterator();  
    while (it.hatNaechsten()) {   
     IBelastung aktueller = (IBelastung) it.naechsten(); 

     for (int i = 0; i < objekte.length; i++) { 
      objekte[i] = aktueller;  
      System.out.print("| " + String.format("%6.2f",objekte[i].bildeAbAufDouble())+" |"); 
      System.out.println(); 
      } 
     } 

    SortierenEinesFeldes.bubbleSort(objekte); 
    System.out.println("Sortierten Laengen"); 

    for (int i = 0; i < objekte.length; i++) { 
     System.out.println("| " + String.format("%6.2f",objekte[i].bildeAbAufDouble())+" |"); 
    } 
    System.out.println(); 

這是我的控制檯 here

爲什麼它打印數字的5倍,然後它應該後爲什麼打印排序只有第一個數字和5次?先謝謝你。

回答

1
for (int i = 0; i < objekte.length; i++) { 
    objekte[i] = aktueller;  
} 

這使用相同的元素填充整個陣列:aktueller

你不應該有兩個嵌套循環。您應該只有一個,它應該增加i在每次迭代:

int i = 0; 
while (it.hatNaechsten()) {   
    IBelastung aktueller = (IBelastung) it.naechsten(); 
    objekte[i] = aktueller; 
    i++; 
} 

另外請注意,你沒有任何東西存儲到由該方法返回的verlauf陣列。

+0

THANKI你這麼多!是的,這是下一步 - 填寫verlauf。 – AndyPandy