Switch Case Anweisung

adel /pixelio.de

 

Die Switch Case Anweisung kann man nutzen, wenn man aus einer festen Menge von möglichen Kandidaten auswählt. Sie könnte zum Beispiel eingesetzt werden wenn auf einem Telefon eine entsprechende Taste gedrückt wurde. Wenn die 1 gedrückt wurde, könnte man zum Beispiel eine Weiterleitung an einen anderen Service implementieren. Wenn die 2 gedrückt wurde, könnte man die Weiterleitung mit einem Servicemitarbeiter umsetzen und so weiter.

Jede Switch Case Anweisung ließe sich auch mit einer „If elseif“ Anweisung umsetzen. Der Vorteil der Switch Case Anweisung ist, dass sie besser lesbar ist, da sie nicht so tief verschachtelt ist.

Der Aufbau ist recht einfach erklärt:

  1. Es startet mit dem Switch Keyword
  2. In den Klammern nach dem Keyword die Variable die überprüft wird
  3. In geschweiften Klammern, die Case Klausel gefolgt von
  4. Dem bedingten Wert und einem Doppelpunkt
  5. Dann kommt die eigentliche Anweisung die ausgeführt werden soll, wenn die Variable diesen Wert enthält.
  6. Am Ende eines Caseblocks steht das Schlüsselwort „break“. Es verhindert ein weiteres Ausführen des nachfolgenden Codes.
  7. Am Ende das optionale Schlüsselwort „default“ der hierauf folgende Code wird ausgeführt, wenn keiner der vorherigen Bedingungen wahr ist, oder bei der vorherigen Anweisung das Schlüsselwort „break“ nicht benutzt wurde.

Zum Beispiel C#, Java und weitere

Zum Beispiel C#, Java und weitere

      int number = 1;
      
      switch (number)
      {
          case 1:
              //Auszuführender Code wenn Number = 1 ist
              break;
          case 2:
              //Auszuführender Code wenn Number = 2 ist
              break;
          default:
              //Wird ausgeführt wenn andere Bedingungen nicht wahr sind
              break;
      }

VB:

Dim number As Integer = 8
 Select Case number
 Case 1
 //Auszuführender Code wenn die Number = 1 ist
 Case 2
 //Auszuführender Code wenn die Number = 2 ist
 Case Else
 //Wird ausgeführt wenn andere Bedingungen nicht wahr sind
End Select

In C# 7 wurde die Switch Anweisung weiterentwickelt. Es ist nun möglich auf jede Art von Typ ein Switch auszuführenden, zum Beispiel auf komplexe Objekte. Es können weiterführende Vergleiche (Pattern) in der Case Klausel benutzt werden. Hier findest du weiterführende Information von Microsoft. 

Um das Ganze noch ein bisschen greifbarer zu machen möchte ich gerne noch ein bisschen zusätzlichen Code mit euch teilen. Nachfolgend findet ihr Code für einen etwas erweiterten Taschenrechner, er kann auch Wurzeln ziehen und quadrieren (wenn W bzw. Q als Operator eingegeben wird). Auch Kommazahlen kann er verarbeiten, allerdings nur Zahlen zwischen -28000 und +28000. Wenn dich das stört, ändere es doch einfach ;). Wenn du Fragen hast nutze bitte die Kommentarfunktion.

using System;

namespace Rechnen
{

    class Program
    {


        static void Main(string[] args)
        {
            string strOperator;
            double dblZahl1;
            double dblZahl2;
            double dblErgebnis = 0;


            Console.WriteLine("\t\t*****\terweiterter Taschenrechner\t*****\n\n");
            Console.Write("Geben Sie die erste Zahl ein:\t\t\t\t\t");
            dblZahl1 = Convert.ToDouble(Console.ReadLine());

            if (dblZahl1 < -28000 | dblZahl1 > 28000)
            {
                Console.WriteLine("\n\nFehler: Bitte geben Sie eine Zahl zwischen -28.000 und 28.000 (achtundzwanzigtausend) ein.");
                Console.Read();
            }
            else
            {
                Console.Write("Geben Sie +, -, *, /, Q, oder W für die Rechenart ein:\t\t");
                strOperator = Console.ReadLine();

                if (strOperator == "+" || strOperator == "-" || strOperator == "*" || strOperator == "/" || strOperator == "W" || strOperator == "Q")
                {

                    switch (strOperator)
                    {
                        case "Q":

                            dblErgebnis = Math.Pow(dblZahl1, 2);
                            break;

                        case "W":

                            if (dblZahl1 < 0)
                            {
                                Console.WriteLine("\n\nFehler: Eine Wurzel aus einer negativen Zahl zu ziehen, ist leider nicht möglich, bitte geben Sie eine Zahl die <= 0 ist ein.");
                                Console.Read();
                            }
                            else
                            {
                                dblErgebnis = Math.Sqrt(dblZahl1);
                            }
                            break;

                        default:

                            Console.Write("Geben Sie die zweite Zahl ein:\t\t\t\t\t");
                            dblZahl2 = Convert.ToDouble(Console.ReadLine());

                            if (dblZahl2 < -28000 | dblZahl2 > 28000)
                            {
                                Console.WriteLine("\n\nFehler: Bitte geben Sie eine Zahl zwischen -28.000 und 28.000 (achtundzwanzigtausend) ein.");
                                Console.Read();
                            }
                            else
                            {
                                if (strOperator == "/" && dblZahl2 == 0)
                                {
                                    Console.WriteLine("------------------------------------------------------------------");
                                    Console.WriteLine("\nFehler: Eine Division durch Null ist mathematisch nicht möglich, nehmen Sie eine andere Zahl!");
                                    Console.WriteLine("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\"Development by Kai Fischer\"");
                                    Console.Read();
                                }
                                else
                                {

                                    switch (strOperator)
                                    {

                                        case "+":

                                            dblErgebnis = dblZahl1 + dblZahl2;
                                            break;

                                        case "-":

                                            dblErgebnis = dblZahl1 - dblZahl2;
                                            break;

                                        case "*":

                                            dblErgebnis = dblZahl1 * dblZahl2;
                                            break;

                                        case "/":

                                            dblErgebnis = dblZahl1 / dblZahl2;
                                            break;

                                    }
                                    if (strOperator == "+" | strOperator == "-" | strOperator == "*" | strOperator == "/" | strOperator == "W" | strOperator == "Q")
                                    {
                                        Console.WriteLine("------------------------------------------------------------------");
                                        Console.WriteLine("\nDas Ergebnis ihrer Rechnung lautet:\t\t\t\t{0}", Math.Round(dblErgebnis, 2));
                                        Console.WriteLine("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\"Development by https://lerne-programmieren.com/blog\"");
                                        Console.Read();
                                    }
                                }

                            }
                            break;

                    }
                }
                else
                {
                    Console.WriteLine("------------------------------------------------------------------");
                    Console.WriteLine("\nDies war keine gültige Eingabe für einen Operanden.\nBitte geben Sie +, -, *, /, Q oder W ein.");
                    Console.WriteLine("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\"Development by https://lerne-programmieren.com/blog\"");
                    Console.Read();
                }
            }
        }

    }
}



Empfohlene weiterführende Literatur:

Grundkurs C: C-Programmierung verständlich erklärt

C# 6 mit Visual Studio 2015: Das umfassende Handbuch: Spracheinführung, Objektorientierung, Programmiertechniken

Programmieren lernen mit Java

8 Antworten auf „Switch Case Anweisung“

  1. I have checked your site and i’ve found some duplicate content, that’s why you don’t
    rank high in google’s search results, but there is a tool that
    can help you to create 100% unique content, search for; Boorfe’s tips unlimited content

  2. I have checked your page and i have found some duplicate content,
    that’s why you don’t rank high in google, but
    there is a tool that can help you to create 100% unique
    articles, search for; Best article rewritwer Ercannou’s essential tools

  3. I have checked your website and i have found some duplicate content, that’s why you don’t rank high in google, but
    there is a tool that can help you to create 100% unique articles,
    search for; SSundee advices unlimited content for your blog

  4. Hi. I see that you don’t update your site too often. I know that writing articles is boring and time consuming.
    But did you know that there is a tool that allows you to create new articles using existing content (from article directories or other pages from your niche)?

    And it does it very well. The new articles are unique and pass the copyscape test.
    You should try miftolo’s tools

  5. I have noticed you don’t monetize your page,
    don’t waste your traffic, you can earn extra
    cash every month. You can use the best adsense alternative
    for any type of website (they approve all websites), for more details
    simply search in gooogle: boorfe’s tips monetize your website

  6. I have noticed you don’t monetize your page, don’t waste your traffic, you
    can earn extra bucks every month. You can use the best adsense
    alternative for any type of website (they approve all websites), for more details simply search
    in gooogle: boorfe’s tips monetize your website

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.