将对象从列表转移到数组中

时间:2016-01-13 19:18:27

标签: java arrays sorting bubble-sort singly-linked-list

背景信息:kragarm是一个由两种负载组成的单链表(单个力和一个时刻都实现了接口IBelastung)。我正在尝试将对象复制到1d数组(objekte)中,根据它们的位置对其进行排序,并将其属性(位置,力和力矩)放在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 个答案:

答案 0 :(得分: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数组中。