2016-01-13 11 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