C# Schleife nur bei der falschen Eingabe?
servus,
könnte mir jemand helfen eine Schleife in mein Code reinzubauen, die sich nur innerhalb der falschen Eingabe aktiviert? hab alles mit meinem Anfängerwissen versucht aber leider erfolglos.
Nur bei den Eingaben 1, 2, 3, 4, 5 und 6 soll das jeweilige Getränk ausgewählt werden, bei anderen Zahlen wird der User gebeten andere Zahl einzugeben.
Console.Write(" | Enter the number: ");
int choosedDrink = Int32.Parse(Console.ReadLine());
switch (choosedDrink)
{
case 1:
Console.WriteLine("\n");
Console.WriteLine("You choosed CocaCola");
break;
case 2:
Console.WriteLine("\n");
Console.WriteLine("You choosed Water");
break;
case 3:
Console.WriteLine("\n");
Console.WriteLine("You choosed Juice");
break;
case 4:
Console.WriteLine("\n");
Console.WriteLine("You choosed IceTee");
break;
case 5:
Console.WriteLine("\n");
Console.WriteLine("You choosed RedBull");
break;
case 6:
Console.WriteLine("\n");
Console.WriteLine("You choosed Cellar Beer");
break;
default:
Console.WriteLine("\n");
Console.WriteLine("\n");
Console.Write("Unidentified Number, try again: ");
choosedDrink = Int32.Parse(Console.ReadLine());
break;
}
2 Antworten
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.
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.
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);