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:
case1: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]=newLKW();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:
case2: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
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.
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?switchcase1:beladen()case2: liste anzeigen()case3: 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