Fallbeispiel 1: "Alkane"
Es soll eine Methode geschrieben werden, welche die Namen der ersten 10 Alkane zurückliefert. Als Parameter bekommt die Methode die Zahl der C-Atome. Man könnte nun mit Hilfe von vielen geschachtelten if-Anweisungen diese Methode implementieren, zum Beispiel so:
public String gibAlkan(int x)
{
if (x== 1) return "Methan"; else
if (x== 2) return "Ethan"; else
if (x== 3) return "Propan"; else
if (x== 4) return "Butan"; else
if (x== 5) return "Pentan"; else
if (x== 6) return "Hexan"; else
if (x== 7) return "Heptan"; else
if (x== 8) return "Octan"; else
if (x== 9) return "Nonan"; else
if (x==10) return "Decan";
}
Eine alternative Möglichkeit, eine solche Vielfachauswahl zu programmieren, ist die switch-Anweisung, die quelltextmäßig aber genau so umständlich aussieht:
public String gibAlkan(int x)
{
switch(x)
{
case 1: return "Methan";
case 2: return "Ethan";
case 3: return "Propan";
case 4: return "Butan";
case 5: return "Hexan";
case 6: return "Hexan";
case 7: return "Heptan";
case 8: return "Octan";
case 9: return "Nonan";
case 10: return "Decan";
}
}
Die switch-Anweisung funktioniert allerdings nur mit ordinalen Datentypen wie byte
, int
oder char
, die im Rechner durch ganze Zahlen dargestellt werden. Wäre die Variable x vom Typ String, float
oder double
müsste man eine zehnfach geschachtelte if-else-Anweisung verwenden, wie in dem ersten Quelltext-Beispiel.
Auch die switch-Anweisung kennt eine Art else-Zweig, nur heißt hier das Schlüsselwort nicht "else", sondern "default":
switch(n)
{
case 1 : System.out.println("Nummer Eins!"); break;
case 2 : System.out.println("Nummer Zwei!"); break;
default: System.out.println("Bitte geben Sie 1 oder 2 ein!"); break;
}
Auch wenn der 1. Fall erfüllt ist, geht die switch-Anweisung automatisch zum nächsten Fall über. Um das zu verhindern, ist das Schlüsselwort break
notwendig. Mit break
wird die switch-Anweisung beendet. Bei dem Beispiel mit den Alkanen wurde break
nicht benötigt, da der return
-Befehl die switch-Anweisung ebenfalls beendet, wenn der jeweilige Fall zutrifft.
Übung 3.5-1
Schreiben Sie eine Methode gibStoffname()
, die ähnlich arbeitet wie die Methode gibAlkan()
. Allerdings soll hier nicht nur die Zahl der C-Atome eingegeben und durch eine switch-Anweisung ausgewertet werden können, sondern auch die Stoffklasse, codiert durch eine Zahl zwischen 1 und 6:
1 = Alkane, 2 = Alkene, 3 = Alkine, 4 = Alkohole, 5 = Aldehyde oder 6 = Alkansäuren.
Wird beispielsweise die C-Atom-Anzahl 4 sowie die Stoffklasse 5 eingegeben, so soll der Name "Butanal" zurückgegeben werden. Bei C = 6 und Stoffklasse 4 soll "Hexanol" zurückgegeben werden, bei C = 7 und Stoffklasse 6 soll "Heptansäure" zurückgegeben werden und so weiter. Die Stoffklasse soll ebenfalls durch eine switch-Anweisung ausgewertet werden.