Compiler-Fehler Auf selben Array in mehreren "cases" vom "Switch" zugreifen

Recrit

Mitglied
Hallo, ich muss eine Ladeverwaltungsprogramm schreiben und dazu gehört auch die geladenen Objekte in einer Ladeliste sortiert anzeigen zu lassen. Und da kommt mein Problem. In "case 1" wird diese Ladelilste schon einmal angezeigt, aber ich soll zu dem eine seperate in "case 2" einrichten und muss dazu auf den in "case 1" erstellten array zugreifen.
Code:
Java:
case 1:
        wl("Sie haben \'Schiff beladen\' gewählt.");
        wl("Auswahl der Güter:");
        wl("\t i.LKW");
        wl("\t ii.PKW");
        wl("\t iii.Motorrad");
        w("Geben sie den jeweiligen vorangeschrieben Index an, um den gewünschten Befehl auszuführen: ");
        String number = sc.next();
        
        if ("i".equals(number)  && LKW.AnzahlLKW<5 && f.getstandartplätze()>0 && f.getgewicht()>0  ){
        w("Anzahl der Lkws, die beladen werden sollen (max 5): ");
        int x=sc.nextInt();
        if ((x+LKW.AnzahlLKW)<=5){
        LKW [] l = new LKW[x];
        LKWarray = true;
        for( int i = 0; i < l.length; i++)
        {
        l[i] = new LKW();
        w("Gewicht des LKWs (max. 40t) eingeben: ");
        double gewicht = sc.nextDouble();
        w("Name des LKWs eingeben: ");
        String name = sc.next();
        int standartplätzeLKW = 6;
        l[i].setLKW(gewicht, name);
        f.beladen(gewicht,standartplätzeLKW);
        wl(name+" wurde geladen. Infolgedessen befindet/befinden sich nun "+l[i].AnzahlLKWS()+" LKW(s) auf der Fähre.");
        }
        java.util.Arrays.sort( l );
        wl("Aktuelle Ladeliiste, sortiert nach Gewicht: " +java.util.Arrays.toString( l ));
        }
        else {
            wl("Anzahl der zur Verfügung stehenden Plätze wurde überschritten.");
...
            }
        }
Nun ist es wie beschrieben, dass ich auf den erstellten array in "case 2" nochmal zugreifen muss.
Java:
case 2:
        wl("Sie haben \'Ladeliste anzeigen\' gewählt.");
        if (LKWarray){
       java.util.Arrays.sort(l);
wl("Aktuelle Ladeliiste, sortiert nach Gewicht: " +java.util.Arrays.toString(l);
        
        
        }
        else {
        wl("Noch kein Objekt geladen!");
           }
        break;
Und jetzt tritt ein Fehler bei beiden Zugriffen auf den Array l "...(l)" in "case 2" auf, der mir da sagt: cannot find symbol
Ich bitte um Hilfe und bedanke mich schon einmal recht herzlich im Vorraus.
mfg Recrit
 
Hallo,

Du kannst doch nicht entscheiden zwischen 2 Möglichkeiten und DENNOCH in Möglichkeit 2 eine Information aus Möglichkeit 1 zu benutzen.
Das ergibt rein Logisch keinen Sinn.
 
Aber, wenn ich die Ladelliste aus case 1 entfern und sie dann in 2 anzeigen möchte, geht das auch nicht. Welche Möglichkeiten bieten sich mir denn sonst?
 
Jo, wie du bereits gemerkt hast, macht das weder vom aufbau noch von der logik sinn.
Deine in case 1 erstelle Ladeliste muss wohl zwangsläufig mindestens eine ebene höher liegen.
siehe scope

Code:
ladeliste
    while
        switch
            case 1 : mach zeugs
            case 2 : mach anderes zeugs mit liste
 
Aber unser Lehrer hat uns die Aufgabe erteilt ein Programm mit folgendem Menü zu erstellen:
Java:
wl("Menü:");
wl("\t 1.Schiff beladen");
wl("\t 2.Ladeliste anzeigen");
wl("\t 3.Restliche Kapazität in Tonnen sowie Plätzen.");
wl("\t 4.Schiff zum Ablegen sowie eine neue Fähre beordern");
wl("\t 5.Programm verlassen");
und um den jeweiligen Befehl auswählen zu können, habe ich das mit einem switch gelöst.
 
Hallo,

ich erkenne in deinem Code weder eine Struktur noch das man sich da mal 5 Minuten über sowas gedanken gemacht hat, was man überhaupt fragen möchte.

Generell gilt:

Wenn du eine Datenstruktur hast, die in mehreren Methoden (hier cases) genutzt werden soll, dann muss sie davor instanziiert werden.

Wenn ich so komplexen Code innerhalb eines Cases habe, wäre es Sinnvoll diesen in Funktionen / Methoden auszugliedern.

Variablen sollte man so benennen, dass man auch in so einem Wirrwar erkennen kann was da drin ist.

ein "L" Array kann alles und nix sein.

In einem Forum kann man auch seine Beiträge editieren.

Gruß,

Martin
 
vielleicht wird e so ein wenig deutlicher, wenn du dann noch Marcineks Hinweise beachtest
Java:
LKW[] ladeliste = new LKW[]
    while not ende //du hast doch ein while außen rum damit man immer wieder ins hauptenü kommt?
        switch
            case 1 : beladen()
            case 2 : liste anzeigen()
            case 3 : ende = true
 
Habe das alles jetzt nochmal überarbeitet und alles funktioniert nun prima, sodass ich das programm morgen sorgenfrei abgeben kann. trotzdem vielen dank für die hilfreichen antworten
 

Neue Themen


Zurück
Oben