Anstelle einer mehrfachen if-else-Struktur wird bei einer Mehrfachauswahl oft die switch-Struktur verwendet. Im switch-Block werden die einzelnen case definiert. Am Ende jeder Case-Anweisungsfolge steht üblicherweise break Dadurch wird die switch-Struktur verlassen und das Programm wird mit der danach folgenden Anweisungen fortgesetzt. |
// Tu8.java import ch.aplu.turtle.*; import java.awt.Color; public class Tu8 { Turtle joe = new Turtle(); public Tu8() { joe.fillToPoint(0, 0); for (int k = 0; k < 6; k++ ) { switch(k) { case 0: joe.setPenColor(Color.red); break; case 1: joe.setPenColor(Color.yellow); break; case 2: joe.setPenColor(Color.blue); break; case 3: joe.setPenColor(Color.green); break; default: joe.setPenColor(Color.black); } for (int i = 0; i < 3; i++) { joe.forward(100); joe.right(120); } joe.right(60); } } public static void main(String[] args) { new Tu8(); } } |
fillToPoint(0, 0) | Die nachfolgend gezeichneten Figuren werden vom Punkt (0, 0) mir der aktuellen Stiftfarbe gefüllt |
for (int k = 0; k < 6; k++) |
k nimmt die Werte 0 bis 5 an |
switch(k) |
Die Stiftfarbe wird in einer switch-Struktur festgelegt |
case 0: |
Anweisungen, die im Fall k = 0 ausgeführt werden |
In diesem Beispiel wird die Bedeutung von break in den case-Anweisungen ersichtlich. Steht in jedem case ein break, so trifft jeweils nur ein Fall zu. Im case 2 fehlt ein break. Jetzt wird sowohl die Anweisung im case 2 (Turtle wird rot) als auch die Anweisung im case 3 (Stiftfarbe wird grün) ausgeführt. Wir sagen, dass die switch-Struktur "durchfällt". |
// Tu8a.java import ch.aplu.turtle.*; import java.awt.Color; public class Tu8a { Turtle joe = new Turtle(); public Tu8a() { joe.fillToPoint(0, 0); for (int k = 0; k < 6; k++ ) { switch(k) { case 0: joe.setPenColor(Color.red); break; case 1: joe.setPenColor(Color.yellow); break; case 2: joe.setColor(Color.red); case 3: joe.setPenColor(Color.green); break; default: joe.setPenColor(Color.black); } for (int i = 0; i < 3; i++) { joe.forward(80); joe.right(120); } joe.right(60); } } public static void main(String[] args) { new Tu8a(); } } |
In diesem Beispiel werden im case 1 und case 2 die gleichen Anweisungen ausgeführt (Turtle wird gelb und die Stiftfarbe wird gelb). Ebenfalls im case 3 und case 4 werden die gleichen Anweisungen ausgeführt (Turtle und die Stiftfarbe werden grün). |
// Tu8b.java import ch.aplu.turtle.*; import java.awt.Color; public class Tu8b { Turtle joe = new Turtle(); public Tu8b() { joe.fillToPoint(0, 0); for (int k = 0; k < 6; k++ ) { switch(k) { case 0: joe.setPenColor(Color.red); break; case 1: case 2: joe.setColor(Color.yellow); joe.setPenColor(Color.yellow); break; case 3: case 4: joe.setColor(Color.green); joe.setPenColor(Color.green); break; default: joe.setPenColor(Color.black); } for (int i = 0; i < 3; i++) { joe.forward(100); joe.right(120); } joe.right(60); } } public static void main(String[] args) { new Tu8b(); } } |