Java: Array monat absteigend sortieren?
import java.util.Arrays;
import java.util.Collections;
public class JavaApplication3 {
public static void main(String[] args) {
int[] monat = new int[12];
for (int count = 0; count < 12; count++) {
monat[count] = count + 1;
Arrays.sort(monat, Collections.reverseOrder());
System.out.println(monat[count]);
}
}
}
Weiß jemand, wie ich das absteigend sortieren kann? Es soll dann also so aussehen:
12,11,10....2,1,0
Aber es kommt irgendwie ein Fehler wenn ich es ausführen will bzw. ich weiß auch nicht, wo der Fehler hier ist.
Es wäre super, wenn mir jemand helfen könnte. Vielen Dank!
4 Antworten
a) Zähle mit der Schleife rückwärts. Beginnend bei monat.length - 1.
b) Innerhalb der Schleife jedesmal neu zu sortieren, ist unnötiger Aufwand. Du kannst den Aufruf komplett entfernen oder du entfernst stattdessen die Schleife und verwendest ein Integer-Array (Integer[]).
Wenn im Schleifenkörper die Arrays.sort-Methode nicht mehr aufgerufen wird, wäre das ok so.
Tatsächlich gibt es noch kürzere Lösungen, bspw. über die Streams API, die seit Java 8 verfügbar ist.
int[] range = IntStream.iterate(12, n -> n - 1).limit(13).toArray();
So lange du aber noch mit den Grundlagen arbeitest, würde ich dir empfehlen, jede Möglichkeit zu nutzen, mit Schleifen zu üben und extended stuff erst einzusetzen, wenn du einmal sicher in dem davor bist.
Okay, behalte ich im Hinterkopf , danke dir vielmals!!
Führe die Sortierung doch erst nach der Befüllungsschleife aus.
(Damit die Sort-Methode funktioniert solltest du den Datentyp auch etwas anpassen.
Siehe regex9 seinen Kommentar)
Integer[] monat = new Integer[12];
for (Integer count=0;count<12;count++)
{
monat[count]=count+1;
System.out.println(monat[count]);
}
Arrays.sort(monat, Collections.reverseOrder());
MFG xGlumi
Die sort-Methode kann primitive Array-Datentypen nicht als Argument aufnehmen. Stattdessen wäre ein Integer-Array (Integer[]) vonnöten.
Wenn du statt int einen Integer nimmst und dann sort(T[] a, Comparator<? super T> c) verwendest, geht das.
Als Comparator kannst du den reversed-Comparator der Klasse Integer nehmen.
Comparator.reversed()
Geht erst ab Java 8.
Java bietet sicherlich eine Funktion um Arrays absteigend zu sortieren. Schau mal nach 'java sort array descending' oder 'java sort array reverse'.
ich habe das jetzt wie folgt gemacht: for (int i= monat.length -1 ;i >=0; i--)
und auf new int[13] geändert. Es kommen jetzt die absteigende Werte raus. Nur eine Frage, ist es okay so oder kann das vereinfachen bzw besser darstellen?