Welchen C# Code benötige ich, um den Benutzer nur Zahlen eingeben zu lassen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Falls auch eine richtig eklige Lösung ok ist:

//In der Konsole wird i.d.R. Text eingegeben. Selbst Zahlen sind hier erstmal im Textformat, deshalb speichere ich die Variable auch in einem String:

string input = Console.ReadLine();

//Danach nutze ich LINQ um den String von Buchstaben zu bereinigen, und speichere das Ergebnis in einer Integer Variable:

int number = Int32.Parse(String.Join("", from character in input where Char.IsDigit(character) select character));

//Das Problem: Es gibt hier noch keine Prüfung ob die Zahl evtl. das Maximum eines Integers übersteigt. Wird also eine zu große Zahl eingegeben erfolgt ein Error.

//Ein kleines Programm für diesen Fall hättest du hier:

int number = 0;
string input = String.Empty;

//Eine Endlos-Schleife, welche bei gewünschter erfolgreicher Eingabe unterbrochen wird.
while(number == 0 && input != "0")
{
    Console.Write("Eingabe: ");
    input = Console.ReadLine();

    //Error Handling in Form von try & catch
    try
    {
        number = Int32.Parse(String.Join("", from character in input where Char.IsDigit(character) select character));
    }
    catch
    {
        Console.WriteLine("Leider war die Zahl zu groß/klein.");
    }
}
Console.Write($"Supi! Deine Zahl ist: {number}.");

Hoffe hier ist etwas bei was dir hilft^^
Woher ich das weiß:Berufserfahrung – Ich bin Entwickler.

Mit Console.ReadKey(bool) kannst Du einzelne Tasten lesen lassen.
Der bool-Parameter bestimmt, ob die jeweiligen Zeichen auch in die Konsole geschrieben werden sollen.

Das kannst Du nutzen, um dir so eine Funktion selber zu bauen.
Einfach eine Schleife, die so lange liest, bis Enter gedrückt wird, dabei aber alles außer Ziffern ignoriert.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler