ich habe einmal zu Testzwecken ein Programm geschrieben, dass die Punktzahl von Spielern sortieren soll bzw. die Spieler danach sortieren soll.
Java:
classHaupt{publicstaticvoidmain(String[] args){System.out.print("Bitte die Anzahl an Spieler eingeben: ");int anzahl_der_spieler =In.readInt();Spieler[] a =newSpieler[anzahl_der_spieler];for(int i =0; i<anzahl_der_spieler; i++){System.out.print("Bitte die Punktezahl und die Anzahl der Siege eingeben: ");
a[i]=newSpieler(In.readInt(),In.readInt());}Arrays.sort(a,newVergleiche());}}
Ich bin Student. Wenn ich richtig informiert bin, ist das eine Vereinfachung. Wir müssen in dem Ordner des Programmes dazu die in und Out Klasse haben.
Noch eine Frage:
Gibt es eine Möglichkeit, in meiner Vergleichs-Klasse zusätzlich nach einem anderen Kriterium zu sortieren, oder muss ich dafür eine neue Klasse erstellen?
Was mir gerade auffällt ist, dass Zeile 4 in Vergleich nicht immer das gewünschte Ergebnis liefern muss, bedingt durch einen möglichen integer overflow
Um nach unterschiedlichen Kriterien zu sortieren, erstellst du am besten einen zusätzlichen Comparator
Oder du drehst das sortierte Array anschließend um, wenn es anstatt aufsteigend absteigend sortiert sein soll...
(Ein flag innerhalb von Vergleich ist eher unschön...)
Ich schätze er meint das eher so:
1. Sortieren nach Punkten.
2. Wenn Punkte gleich, dann sortier nach Siegen.
Für sowas legt man dann keinen zweiten Comparator an.
Ich bin Student. Wenn ich richtig informiert bin, ist das eine Vereinfachung. Wir müssen in dem Ordner des Programmes dazu die in und Out Klasse haben.
Nein, ich möchte das Array noch einmal komplett anders sortieren. Dafür habe ich jetzt eine neue Klasse angelegt. Mich hat nur interessiert, ob dies ein schlechter Programmierstil wäre.
Ich schätze er meint das eher so:
1. Sortieren nach Punkten.
2. Wenn Punkte gleich, dann sortier nach Siegen.
Für sowas legt man dann keinen zweiten Comparator an.
Wenn a.punkte() eine sehr große Zahl, und b.punkte() eine sehr große negative Zahl ist kanns sein dass du den Wertebereich von nem Integer verlässt. Dann wird die eigentlich positive Zahl zu einer negativen.