Elemente im Array umdrehen

TeJay

Mitglied
Hallo Leute, ich hätte zum folgenden Code eine Frage.

Java:
public class Test {

	public static void main(String[] args) {
		
		String [] woerter = {"Regal ", "Schuhe ", "Beispiel "};
		
		for (int i = woerter.length; i > 0 ; i--) {
            System.out.print(woerter[i-1]);
	}
	}
}

Also ich möchte das Feld umdrehen, spricht:

Beispiel Schuhe Regal

Bei Zeile 8 ist es mir Folgendes unklar. Ich verstehe nicht, warum i um eins [i-1] abgezogen werden muss. Ich hätte ohne -1 gemacht. Gibt es eine entsprechende Logik dafür?

Bitte erklärt es mir! Dankeschön 🙂

TeJay
 
Weil i als Startwert die Länge des Arrays bekommt. Wenn das Array aber 10 Elemente hat, dann sind sie folgendermaßen gespeichert:

array[0] =
...
array[9] =

Deswegen gibt es den Index 10 nicht, weil bei 0 begonnen wird, zu zählen.
 
[WR]Habe den Beispielcode nicht richtig gelesen. Habe die Frage völlig falsch verstanden, bitte diesen Post ignorieren.[/WR]
Ich verstehe nicht, warum i um eins [i-1] abgezogen werden muss. Ich hätte ohne -1 gemacht. Gibt es eine entsprechende Logik dafür?
Du hast eine for-Schleife mit i als Laufvariabe.
Wie ist dieses i initialisiert?
Code:
woerter.length
(also etwas was größer als 0 ist)
Wie ist die Bedingung?
Code:
i>0
Wenn Du i nie veränderst, wie lange wird diese Schleife dann laufen?

Der Code wird übrigens so nicht laufen. Probiers aus, dann siehst Dus.
 
Zuletzt bearbeitet von einem Moderator:
pro2 hat gesagt.:
Hm? Natürlich läuft der Code, wieso sollte er auch nicht?^^
Herrje, natürlich! Ich hatte das [i-1] übersehen und merke jetzt gerade, dass es in der Frage genau darum ging, ich sie also völlig falsch verstanden habe 😱 Danke für den Hinweis
 
ich weiß nicht ob es einfacher geht, aber damit sollte es auf jeden fall auch gehen:

Java:
public class Test {
 
    public static void main(String[] args) {
        
        String [] woerter = {"Regal ", "Schuhe ", "Beispiel "};
        System.out.println("normal");
        for (int i = 0; i < woerter.length; i++) {
            System.out.print(woerter[i]); //ausgabe in der richtigen reihenfolge also 0 -> 2
    }
        String[] invertedString = invertStringArray(woerter);
        System.out.println("umgedreht");
        for (int i = 0; i < invertedString.length; i++) {
            System.out.print(invertedString[i]); //ausgabe in der richtigen reihenfolge also 0 -> 2
    }
    }

    public String[] invertStringArray(String[] in){
    String[] out = new String[in.length];
    for(int i = 0; i < in.length; i++){
    out[] = in[in.length-i] //umdrehng der einzelnen elemente, sprich von der maximalanzahl (3) wird immer mehr abgezogen
    }
return out;

}
}
 
Zuletzt bearbeitet:
Java:
    String[] out = new String[in.length];
    for(int i = 0; i < in.length; i++){
    out[] = in[in.length-i] //umdrehng der einzelnen elemente, sprich von der maximalanzahl (3) wird immer mehr abgezogen
    }
Mal abgesehen davon, dass der Code nicht funktioniert würde bei i=0 ein ArrayOutOfBoundException fliegen, da hier mit
Code:
in[in.length]
auf einen nicht vorhandenen Index zugegriffen werden würde.
 
Weil die Methode mal noch gar keiner gepostet hat:

Java:
    public static void main(String[] args)
    {
        int array[] = {1, 2, 4, 5, 6};
        reverseArray(array);
        System.out.println(Arrays.toString(array));
    }
    
    public static void reverseArray(int array[])
    {
        for(int i = 0, j = array.length - 1; i < array.length / 2; i++, j--)
        {
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    }

Ist schneller und belegt keinen extra Speicher.
 
Zuletzt bearbeitet:
Darum ging es hier aber nicht, er wollte die Elemente einfach nur in umgekehrter Reihenfolge ausgeben. Sonst wäre auch
Java:
    public static int[] reverseArray(int array[])
    {
        int[] array2 = new int[array.length];
        for(int i = 0; i < array.length; i++)
        {
            array2[array.length - i - 1] = array[i];
        }
        return array2;
    }
besser. Niemand hat gerne 100 Variablen im Schleifenkopf.
 

Zurück
Oben