"Grundkurs Programmieren in Java - (6. Auflage, 2011)"
2001-2011, Carl Hanser Verlag

Lösungsvorschlag zu Aufgabe 10.4 (Version 3.0)

(c) 2001-2011 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger

Beim Versuch das Programm zu übersetzen erhält man folgende Fehlermeldung:
  E:\hiwi\temp>javac Exueb8.java
  Exueb8.java:21: cannot resolve symbol
  symbol  : variable zahl
  location: class Exueb8
        zahl = 0.5;
        ^
  Exueb8.java:24: cannot resolve symbol
  symbol  : variable zahl
  location: class Exueb8
      System.out.println(zahl);
                         ^
  2 errors

Der Fehler besteht darin, dass zahl innerhalb eines Blocks deklariert ist (nämlich innerhalb des try-Blocks) und damit die Deklaration nur innerhalb dieses Blocks gütig ist, aber nicht mehr außerhalb, so dass dort der Bezeichner unbekannt ist.

Zur Abhilfe deklarieren wir zahl einfach in der ersten Zeile der main-Methode:

  public static void main(String[] args) {
    double zahl;
    // Bestimme eine Zufallszahl zwischen 0 und 0.5
    try {
      zahl = gibZufallszahlBisEinhalb();
    }
  ...
Einige Autoren empfehlen sogar, aus Gründen der Übersichtlichkeit alle innerhalb einer Methode benöntigten lokalen Variablen zu Beginn der Methode zu deklarieren.

Zusätzlich bauen wir nur eine Ausgabe ein, so dass wir mitbekommen, wenn die Zahl 0.5 durch eine Exception zustande gekommen ist:
    catch(Exception e) {
      System.out.println( "(Exception aufgetreten)" );
      zahl = 0.5;
    }


Quelltext: Exueb8.java