C#: Wenn die Eingabe keine Zahl ist?
Hallo
ich habe einmal eine kleine Frage an Experten in diesem Gebiet.
Ich habe ein kleines Programm in C# geschrieben, welches Flächen ausrechnet. Ich wollte noch paar Ergänzungen dazu machen, wie:
Wenn die Eingabe keine Zahl für die Flächenberechnung ist, das man die Möglichkeit hat, erneut etwas einzugeben und es kommt eben eine Warnung, wie "Bitte nur Zahlen!".
Habt ihr da Ideen?
Hier der Code:
2 Antworten
Nutze eine Schleife in Kombination mit TryParse:
double zahl;
do
{
Console.WriteLine("Bitte geben Sie eine Zahl ein.");
}
while (!double.TryParse(Console.ReadLine(), out zahl));
Wenn die Eingabe erfolgreich zu einer Zahl mit Nachkommastelle geparst werden kann, wird der evaluierte Wert in zahl gespeichert. Andernfalls erfolgt eine Wiederholung der Abfrage.
Die TryParse-Methode gibt es auch für andere Typen, wie z.B. Int32.
Was du machen könntest ist eine Schleife. Du setzt also die Abfrage in eine Schleife und darin machst du einen Try-Catch Block. In dem Try Block ist dann die Abfrage für zahl und Die Konvertierung. Falls eine nicht valide Zahl eingegeben wird, wird der catch Block aufgerufen in dem du so etwas aus gibst wie "falsche Eingabe". Und mit dem Keyword "continue" springst du dann wieder zum Anfang der schleife.
Das würde dann ungefähr so aussehen:
int zahl;
while(true)
{
try
{
Console.WriteLine("bitte geben Sie eine zahl ein") ;
zahl = Convert.ToInt32(Console.ReadLine());
break;
}
catch
{
Console.WriteLine("ungültige Eingabe") ;
continue;
}
}
Man sollte Abläufe nicht mit Exceptions steuern.
Schau dir lieber den Code von regex9, das ist besser.
Oh Danke dir das probiere ich gleich mal aus