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.