如何验证用户输入以仅允许数字

时间:2019-04-09 20:17:15

标签: c#

我这里有一种方法,允许用户输入除999以外的任何数字。但是当用户输入负数或字母时,我不知道如何创建验证。

    static int EnterScores(double[] scores, int maxScores)
    {
        double userInput;           
        int count = 0;
        while (count < maxScores)
        {
            Console.Write("Enter a score(or 999 to quit): ");
            userInput = double.Parse(Console.ReadLine());
            if (userInput == 999 || userInput < 0)
                break;
            scores[count++] = userInput;       
        }
        return count;
    }

3 个答案:

答案 0 :(得分:1)

您可以使用double.TryParse。如果可以将字符串转换为float,则将为true

...
var str = Console.ReadLine();
if (double.TryParse(str, out userInput)){
    if (userInput == 999 || userInput < 0)
        break;
    scores[count++] = userInput;
}
...

答案 1 :(得分:0)

userInput == 999和userInput <0的测试分开,像这样:

...
if (userInput == 999)
{
    break;
}
else if (userInput < 0)
{
    Console.WriteLine("Invalid input");
} 
else
{
    scores[count++] = userInput;
}
...

答案 2 :(得分:0)

如果用户输入字母或无法转换为double的内容,则这段代码double.TryParse将抛出exception,并且程序将失败。

因此,您应该在此处使用try-catch块:


try
{
    userInput = double.Parse(Console.ReadLine());
    if (userInput == 999)
    {
        break;
    }
    else if (userInput < 0)
    {
        Console.WriteLine("Invalid input");
    } 
    else
    {
        scores[count++] = userInput;
    }
}
catch(Exception e)  // will take care of letters
{
    Console.WriteLine("You enter an Invalid input !"):
}