Verzweigungen

Mehrfachverzweigungen - switch

 
Bei der switch-Anweisung wird ein Ausdruck geprüft. In Abhängigkeit vom Wert des Ausdruckes wird eine der folgenden Alternativen (case1 ... caseN) gewählt und die entsprechende Anweisungfolge (AF1 ... AFN) ausgeführt. Trifft keine der Alternativen zu, wird der default-Zweig ausgeführt, sofern er vorhanden ist.
Struktogramm


Struktogramm
Syntax


switch (Bedingung)
{
case Ausdruck1: {Anweisungsfolge1}
case Ausdruck2: {Anweisungsfolge2}
...
case AusdruckN: {AnweisungsfolgeN}
default: {Anweisungsfolge} }
Beispiel


switch (Monat)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
 tage=31; break;
case 4: case 6: case 9: case 11:
  tage=30; break;
case 2:
  tage=28; break;
default:
  System.out.println("Eingabefehler!");
}

Übung:
Warum funktioniert das folgende Programm zum Zählen der Vokale in einer Zeichenkette nicht richtig?

public class switch_vokale
{
public static void main(String[] args)
{
String wort;
int anzahl_vokale=0,laenge_des_wortes;

System.out.println("Dieses programm zaehlt die Vokale, die in einem Text vorkommen.");
System.out.println("Geben Sie ein oder mehrere Worte ein!");

wort = In.readString();
laenge_des_wortes = wort.length();

for (int i=0; i<=laenge_des_wortes-1; i=i+1)
  {
switch (wort.charAt(i))
{
   case 'a': anzahl_vokale = anzahl_vokale + 1;
   case 'A': anzahl_vokale = anzahl_vokale + 1;
   case 'e': anzahl_vokale = anzahl_vokale + 1;
   case 'E': anzahl_vokale = anzahl_vokale + 1;
   case 'i': anzahl_vokale = anzahl_vokale + 1;
   case 'I': anzahl_vokale = anzahl_vokale + 1;
   case 'o': anzahl_vokale = anzahl_vokale + 1;
   case 'O': anzahl_vokale = anzahl_vokale + 1;
   case 'u': anzahl_vokale = anzahl_vokale + 1;
   case 'U': anzahl_vokale = anzahl_vokale + 1;

  }
}

System.out.println("Der Text enthielt "+anzahl_vokale+" Vokale");


}
}