C# Schleife nur bei der falschen Eingabe?

Shark4  18.10.2022, 14:00

PS: Suche solche Fragen am besten im Internet. Eines der ersten Ergebnisse wird von StackOverflow sein. Ein Forum für jedes erdenkliche Programmierproblem.

kl4vd14 
Fragesteller
 18.10.2022, 14:02

danke dir! merk ich mir :)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Für diesen Fall eignet sich eine do-while-Schleife. Die Aktion (Lesen und Auswerten der Zahl) wiederholt sich solange, wie die Eingabe außerhalb des erwarteten Wertebereichs liegt.

int choosedDrink;

do
{
  // read number ...

  // switch-case ...
}
while (choosedDrink < 1 || choosedDrink > 6);

Das Auslesen der nächsten Eingabe im default-case solltest du herausnehmen.

kl4vd14 
Fragesteller
 18.10.2022, 14:03

meega, vielen herzlichen Dank!

0

break beendet den switch, richtig? Weil wenn nicht, bräuchtest du einfach nur eine Endlosschleife darüber bauen.

Ansosten würde ich eine Variable definieren, zum Beispiel bWeiter, sie auf true setzen und eine Schleife um Eingabe + switch setzen, solange bWeiter true ist.

In den einzelnen switch-Zweigen setzt du dann bWeiter auf false.

Suboptimierer  18.10.2022, 13:59

Oder andersherum, du setzt bWeiter vor dem switch auf false und im default auf true.

   bool bWeiter;
   do{
   Console.WriteLine("\n");
   bWeiter = false;
   switch (choosedDrink)
   {
      case 1:
      Console.WriteLine("You choosed CocaCola");
      break;
      
      //...

      case 6:
      Console.WriteLine("You choosed Cellar Beer");
      break;

      default:
        Console.WriteLine("\n");
        bWeiter = true
        Console.Write("Unidentified Number, try again: ");
        choosedDrink = Int32.Parse(Console.ReadLine());
        break;

  }
  }while(bWeiter);
0