Hallo!
Nur leider passt das dem Compiler nicht:
---------- Compiler ----------
Aufgabe1.java:111: cannot resolve symbol
symbol : variable a1
location: class Aufgabe1
a1.fahrLos();
^
1 errorNun die Frage: Wie kann ich aus dem Case2 auf das Objekt das ich zuvor in Case1 erstellt habe zugreiffen?
Das ganze schaut ja vereinfacht so aus:
for(...)
switch(zahl) {
case 1:
// ...
Auto a1 = ...;
break;
case 2:
// ...
a1.fahrLos();
break;
}
Wenn switch(1) aufgerufen wird, wird das Auto-Objekt a1 erstellt. Das _kann_ passieren, _muss_ aber nicht. Denn falls nur case 2 eintritt, existiert a1 überhaupt nicht (auch wenn Du durch die Schleife eigentlich sicherstellst, dass zuerst switch(1) durchlaufen wird). In der Regel gilt: Alle innerhalb einer bedingten Anweisung deklarierten Objekte sind von "außerhalb" nicht zugänglich und werden vom Compiler angekreidet, falls man sie trotzdessen benutzen möchte. Deklariere deshalb das Auto a1 _vor_ der switch-Anweisung und nicht in einer bedingten Verzeigung.
Oliver
Gewissen: Die innere Stimme, die uns warnt, weil jemand zuschauen koennte.