Oliver Sonthof: Java Hausaufgabe mit Klassen

Beitrag lesen

Hallo!

Nur leider passt das dem Compiler nicht:
---------- Compiler ----------
Aufgabe1.java:111: cannot resolve symbol
symbol  : variable a1
location: class Aufgabe1
   a1.fahrLos();
                        ^
1 error

Nun 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.