Ich versuche, eine Arraylist von Objekten durch die Variable des Objekts alphabetisch zu sortieren, die "Name" genannt wird. Hier ist der Code, den ich schrieb, dies zu tun:Warum funktioniert meine Blasensortierung nicht? - Java
public void sortName()
{
int j;
for (j = 0; j < theBatters.size()-1; j++)
{
System.out.println(theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j+1).getName()));
if (theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j).getName()) > 0)
{ // ascending sort
Collections.swap(theBatters, j, j+1);
j=0;
}
}
}
Ich glaube, das Problem etwas mit der Linie zu tun hat, wo Swap verwendet wird, wenn ich drucken Sie die Arraylist, nachdem ich dieses sortName() -Methode ist alles in die gleiche Reihenfolge, trotz dieser Linie Wert größer als 0 zurückkehrt, wenn es soll:
System.out.println(theBatters.get(j).getName().compareToIgnoreCase(theBatters.get(j+1).getName()));
In Ihrer if-Anweisung, warum vergleichen Sie bekommen (j) zu bekommen (j) wieder? –
@AndrewtheProgrammer hat den Fehler gefunden. Sie möchten 'theBatter.get (j + 1)' in Ihrer 'if' Anweisung in der 'compareToIgnoreCase' Methode haben. –
Ich bin froh, dass ich helfen konnte, ich weiß, dass einfache Fehler wie diese nur schwer zu finden sind –