Liste zurückgeben

Queiser

Mitglied
Hallo zusammen.
Ich habe mal eine Frage, bzw. Unklarheit. Ich möchte von einer Methode Rueckwaerts, dass mir eine gegebene Liste {1,2,3,4,5} rückwärts neu erstellt wird und diese in meiner Main Methode ausgeben lassen:

class ReturnFunktionen {
public static void main(String[] args) {

int [] Liste = {1,2,3,4,5};

Rueckwarts(Liste);
for(int i = 0; i < Liste.length; i++){
System.out.println(ListeNeu);
}
}
public static int[] Rueckwaerts(int [] Liste){

int [] ListeNeu = new int[Liste.length];

for(int i = 0; i < Liste.length; i++){
ListeNeu[Liste.length - 1 - i] = Liste;
}
return ListeNeu;
}
}

Als Fehler erhalte ich die Nachricht, dass ListeNeu in der main Methode nicht bekannt ist. Ich habe doch aber vorher die Methode Rueckwaerts(Liste); aufgerufen!?!? Was hab ich falsch gemacht, bzw. wie müsste es richtig sein?
(Sry, hab den Code-Editor nicht gefunden)
 
Erstmal vernünftig formatiert:
Java:
class ReturnFunktionen {
    public static void main(String[] args) {
        int [] Liste = {1,2,3,4,5};

        Rueckwarts(Liste);
        for(int i = 0; i < Liste.length; i++){
            System.out.println(ListeNeu[i]);
        }
    }

    public static int[] Rueckwaerts(int [] Liste){
        int [] ListeNeu = new int[Liste.length];

        for(int i = 0; i < Liste.length; i++){
            ListeNeu[Liste.length - 1 - i] = Liste[i];
        }
        return ListeNeu;
    }
}
Als Fehler erhalte ich die Nachricht, dass ListeNeu in der main Methode nicht bekannt ist. Ich habe doch aber vorher die Methode Rueckwaerts(Liste); aufgerufen!?!?
Variablen haben (nicht nur) in Java einen gewissen Gültigkeitsbereich, in dem auf sie direkt zugegriffen werden kann.

Variablen, die in einem Block (Code, der durch geschweifte Klammern begrenzt wird) deklariert wurden, sind nur in diesem Block oder einem inneren Block gültig. Parameter von Methoden etc. zählen zu dem betreffenden Block.

Wenn Du die Methode Rueckwaerts ansiehst, hat diese zwei Blöcke: der innere Block ist Deine for-Schleife, der äußere die Methode selbst. Da Du ListeNeu innerhalb der Methode deklariert hast, kannst Du auch nur innerhalb der Methode darauf zugreifen. Bei Deiner for-Schleife hast Du eine Variable i deklariert, auch diese Variable existiert nur innerhalb der Schleife.

Würdest Du z. B. schreiben:
Java:
for (int i = 0; i < 10; i++) {
    int v = 5;
    // mach irgendwas
}
System.out.println(i);
System.out.println(v);
würde dies zwei Fehler enthalten: weder das i noch das v ist außerhalb der Schleife gültig.

Die Methode Rueckwaerts kann somit auch nicht auf die in main deklarierte Variable Liste zugreifen. Deswegen übergibst Du in main die Liste als Parameter an die Methode Rueckwaerts. Dass die Variable "Liste" in main und der Parameter "Liste" der Methode Rueckwaerts gleiche Bezeichner haben, spielt keine Rolle: es handelt sich um zwei völlig unabhängige Variablen.

Das ist übrigens absolutes Grundlagenwissen: schnapp Dir ein Buch oder eine andere gute Quelle, dort ist das vermutlich besser erklärt, als ich das je könnte.

Was hab ich falsch gemacht, bzw. wie müsste es richtig sein?
Deine Methode Rueckwaerts gibt das Ergebnis zurück (return ...) und dieses kannst Du in der aufrufenden Methode, hier also in main, einer dort gültigen Variablen zuweisen.

Beispiel:
Java:
    public static void main(String[] args) {
        int [] Liste = {1,2,3,4,5};

        int[] ergebnis = Rueckwarts(Liste);
        for(int i = 0; i < ergebnis.length; i++){
            System.out.println(ergebnis[i]);
        }
    }
 
Das ist übrigens absolutes Grundlagenwissen: schnapp Dir ein Buch oder eine andere gute Quelle...
Im Übrigen ein immer gültiges Gesetz.
Das ist nett gemeint, aber ich stelle immer wieder fest, dass sich meine didaktischen Fähigkeiten in Grenzen halten 🙂
Übung macht den Meister 😉 Ist es normal, das man geneigt ist die Eigenleistung meist schlechter zu bewerten, als diese in Wirklichkeit ist?
 
Hallo zusammen.
Ich habe mal eine Frage, bzw. Unklarheit. Ich möchte von einer Methode Rueckwaerts, dass mir eine gegebene Liste {1,2,3,4,5} rückwärts neu erstellt wird und diese in meiner Main Methode ausgeben lassen:

class ReturnFunktionen {
public static void main(String[] args) {

int [] Liste = {1,2,3,4,5};

Rueckwarts(Liste);
for(int i = 0; i < Liste.length; i++){
System.out.println(ListeNeu);
}

public static int[] Rueckwaerts(int [] Liste){

int [] ListeNeu = new int[Liste.length];

for(int i = 0; i < Liste.length; i++){
ListeNeu[Liste.length - 1 - i] = Liste;
}
return ListeNeu;
}
}

Als Fehler erhalte ich die Nachricht, dass ListeNeu in der main Methode nicht bekannt ist. Ich habe doch aber vorher die Methode Rueckwaerts(Liste); aufgerufen!?!? Was hab ich falsch gemacht, bzw. wie müsste es richtig sein?
 

Zurück
Oben