schrieb ich habe dies do-while-Schleife in einer Konsolenanwendung in C#:C# Schleife Schleifen der ersten Anweisung dreimal, bevor auf die zweite Mitteilung bewegen
do
{
ThisHelp.ShowMenu();
userChoice = (char) Console.Read();
ThisHelp.Helpon(userChoice);
}while(ThisHelp.IsValid(userChoice) == false);
Verfahren ThisHelp.ShowMenu()
nur einen Haufen schreiben hat + Console.WriteLine Methoden, die den Benutzer auffordern, eine Zahl von 1 bis 8 einzugeben. Die Methode ThisHelp.Helpon()
hat einen Schalter, der abhängig von der Benutzereingabe ein anderes Stück Text anzeigt. Das Verfahren ThisHelp.IsValid
prüft nur, dass die Benutzereingabe eine Zahl von 1 bis 8 ist
Hier liegt das Problem: Nachdem der Benutzer eine Nummer und drückt ENTER schreibt, führt die erste Anweisung der Schleife 3-mal, bevor die zweite Anweisung ausgeführt mindestens einmal. Warum passiert dies?
edit: Hier ist der Code des ThisHelp.IsValid
Methode, wie gewünscht:
public bool IsValid(char ch)
{
if (ch < '1' | ch > 8 & ch != 'q') return false;
else return true;
}
Sie sollten 'verwenden int.Parse (Console.ReadLine())' statt '(char) Console.Read()' –
Dont müssen Sie die Eingabe bestätigen, bevor die Ausführung der ' ThisHelp.Helpon (userChoice); 'Methode? – DCruz22
@ DCruz22 Falls der Benutzer ein ungültiges Zeichen eingibt, wird mit der Methode 'ThisHelpon (userChoice);' nichts ausgedruckt, und die Ausführung springt wie beabsichtigt aus der Schleife heraus. Ich könnte es auf eine andere Weise machen, aber die Übung verlangte von mir, dass ich die Do-While-Schleife benutzte, also tat ich das. –