背景信息: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次?先感谢您。
答案 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
数组中。