Hallo liebe Community,
ich habe eine Frage an euch und hoffe das ihr mir helfen könnt.
Wie kann ich eine Nutzereingabe machen bei dem man als Antwort nur Ja oder Nein wählen kann? Und falls man etwas anderes schreibt, dass dann erneut nach Ja oder Nein gefragt wird.
Ich hoffe ihr wisst was ich meine und könnt mir helfen.
Mit freundlichen Grüßen,
rangman135
Hallo rangman135,
string userInput = null;
do
{
Console.Write("Deine Antwort ist 'Ja' od. 'Nein'?");
userInput = Console.ReadLine();
//if (userInput == "Ja" || userInput == "Nein") break;
if (Regex.IsMatch(userInput, "^(Ja|Nein)$")) break;
// gibt sicher noch kompliziertere Möglichkeiten ;-)
} while (string.IsNullOrWhiteSpace(userInput));
Bedenke aber dass so der Benutzer u.U. in einer Schleife festhängt -- es sei denn er bricht das Programm (z.B. mit Strg+C) ab.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Wenn ich was mit der Konsole mache, benutze ich ganz gerne ReadKey.
Du kannst dann auch in einer Schleife jedes geschriebene Zeichen abfangen und darauf reagieren.
Ist es ein j -> Ja
Ist es ein n -> Nein
Console.WriteLine("Ja [j], Nein[n]");
var input = null as string;
while(true)
{
var keyInfo = Console.ReadKey(true);
// STRG + C abfangen
if (keyInfo.Modifiers == ConsoleModifiers.Control && keyInfo.Key == ConsoleKey.C)
break;
// J oder N abfangen
if (keyInfo.Key == ConsoleKey.J )
{
input = "Ja";
break;
}
if (keyInfo.Key == ConsoleKey.N)
{
input = "Nein";
break;
}
// Über Fehleingabe informieren
Console.Beep();
}
Console.WriteLine(input);
Console.ReadKey();
So finde ich die Nutzung deutlich angenehmer, da ein Tastendruck reicht.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Hallo Palladin007,
var input = null as string;
Finde ich schon schräg und umständlich für
string input = null;
Mit var
lässt sich auch übertreiben, so dass der Code nicht unbedingt leserlicher wird.
So finde ich die Nutzung deutlich angenehmer, da ein Tastendruck reicht.
Klar, würde ich auch nur mit [j] / [n] machen. Aber so wars ja nicht gefragt 😉
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Vielen dank für die beiden Antworten. Da ich später sowieso mit WindowsForms arbeiten werde, werde ich das so wohl nicht mehr brauchen. Ein grundlegendes Verständnis dafür wollte ich trotzdem haben.