Turtlegrafik mit Java
HomeAufgabenDruckenJava-Online

switch-Struktur (Mehrfachauswahl)


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 = 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 = 0; i < 3; i++)
      {
        joe.forward(100);
        joe.right(120);
      }
      joe.right(60);
    }
  }

  public static void main(String[] args)
  {
    new Tu8();
  }
}
 

Erklärungen zum Programmcode:
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:         
    joe.setPenColor(Color.red);
    break;

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 = 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 = 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 = 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 = 0; i < 3; i++)
      {
        joe.forward(100);
        joe.right(120);
      }
      joe.right(60);
    }
  }

  public static void main(String[] args)
  {
    new Tu8b();
  }
}