zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Ja. Mehrere Anweisungen müssen als Blockanweisung geschrieben werden.

yield-Anweisung

Werden in einer case-Anweisung rechts vom Pfeilsymbol mehrere Anweisungen benötigt, können diese als Blockanweisung in geschweifte Klammern gesetzt werden. In diesem Fall muss die letzte Anweisung yield sein. Mit der yield-Anweisung wird in unserem Beispiel das Ergebnis an die Variable meldung übergeben und die switch-Anweisung darauf beendet.

meldung = switch (farbe)
{
  case 'r', 'R' -> {System.out.println("case 1"); yield meldung + " rot";}
  case 'o', 'O' -> {System.out.println("case 2"); yield meldung + " orange";}
  case 'g', 'G' -> {System.out.println("case 3"); yield meldung + " gelb";}
  case 'b', 'B' -> {System.out.println("case 4"); yield meldung + " blau";}
  case 'v', 'V' -> {System.out.println("case 5"); yield meldung + " violett";}
  default -> meldung + " unbekannt";
};

Das vollständige SwitcherNeu Programm steht unten:

import java.util.Scanner;
class SwitcherNeu
{
  public static void main ( String[] args )
  {
    char   farbe = 'G' ;
    String meldung = "Die Farbe ist";
    String userIn;

    Scanner scan = new Scanner( System.in );

    System.out.print("Geben Sie einen Buchstaben fuer eine Farbe ein: ");
    userIn = scan.nextLine();
    farbe = userIn.charAt( 0 );  // 1. Buchstaben holen
    meldung = switch (farbe)
    {
      case 'r', 'R' -> {System.out.println("case 1"); yield meldung + " rot";}
      case 'o', 'O' -> {System.out.println("case 2"); yield meldung + " orange";}
      case 'g', 'G' -> {System.out.println("case 3"); yield meldung + " gelb";}
      case 'b', 'B' -> {System.out.println("case 4"); yield meldung + " blau";}
      case 'v', 'V' -> {System.out.println("case 5"); yield meldung + " violett";}
      default -> meldung + " unbekannt";
    };

  System.out.println ( meldung ) ;
  }
}

Frage 17:

Kann die alte Syntax für switch weiterhin verwendet werden?