Array in ein anderes Array absteigend sortieren - Java?

3 Antworten

Lass dir einfach Mal den Wert von hoch.length ausgeben. Ich kann kein Java aber ich würde Mal glatt behaupten dass hoch.length == 4 ist (dein Array enthält ja 4 Felder) der letzte Index ist allerdings 3 (da der Array-index ja bei 0 anfängt zu zählen)

Deine Schleife arbeitet ja aktuell solange i <= hoch.length und da du i gleichzeitig als Indexpointer für das Array nutzt wird mit i==4 ein Feld angesprochen welches nicht existiert, daher der Fehler Index Out of bound.

Woher ich das weiß:Berufserfahrung – Administrator mit über 12 Jahren Berufserfahrung
milchkanne1 
Fragesteller
 02.06.2021, 12:56

Das wars, danke dir!

0
Krabat693  02.06.2021, 12:59

Noch eine Anmerkung zur Lösung. Es währe viel eleganter wenn du zum Start der Schleife

i = hoch.length -1

setzt und dann statt einem inkrement mit dem dekrement arbeitest i--

Dann lässt du die Schleife laufen solang i >= 0

Dann kannst du direkt über hoch [i] die Daten in umgekehrter Reihenfolge aus deinem Array holen.

0

Verstehe ich das richtig, dass du einfach die Werte aus dem einen Array umgedreht in das andere Array schreiben willst? (Also die Werte sind nicht durcheinander, sondern schon aufsteigend im ersten Array?)

public static int[] reverseArray(int[] input) {
	// neues Array mit der Länge von input erstellen
	int[] result = new int[input.length];
	
	// Werte von input umgekehrt in result eintragen 
	for (int i = 0; i<input.length; i++) {
		result[input.length - i - 1] = input[i];
	}
	
	// Ergebnis zurückgeben
	return result;
}

Ausgabe z.B. mit

public static void main(String[] args) {
	int[] hoch = {2,3,4,5};
	System.out.println(Arrays.toString(hoch));
	System.out.println(Arrays.toString(reverseArray(hoch)));
}

Falls das Array vorher noch aufsteigend sortiert werden muss, dann kannst du einfach Arrays.sort benutzen.

	public static void main(String[] args) {
		int[] hoch = {47,11,0,8,15};
		Arrays.sort(hoch);
		System.out.println(Arrays.toString(hoch));
		System.out.println(Arrays.toString(reverseArray(hoch)));
	}

Ich glaube „Hilfe = runter[i]“ müsste nach deiner Logik „Hilfe = i“ sein.

Dieses Problem ist mit Streams deutlich leichter zu lösen. Schau dafür am besten mal in die Antwort von Xearox rein.

Woher ich das weiß:Berufserfahrung