用字符串回答时如何确保int不会使应用程序崩溃

时间:2018-12-06 19:46:21

标签: c#

我有一个带有int变量的控制台应用程序。我需要读取用户的输入,并确保如果输入不能转换为整数值,我可以告诉用户他们输入了无效的答案。

我该怎么做?这是我到目前为止的内容:

class Program
{
    static void Main(string[] args)
    {
    Start:
        Console.WriteLine("Enter two numbers");
        var input1 = Convert.ToInt32(Console.ReadLine());
        var input2 = Convert.ToInt32(Console.ReadLine());
        if (input1 + input2 == 3)
            Console.WriteLine("");
        else if (input1 + input2 == 10)
        {
            Console.WriteLine("");
        }
        else
            Console.WriteLine("");
        goto Start;
    }
}

3 个答案:

答案 0 :(得分:4)

正如您提到的,当无法解析输入时,

Convert.ToInt32(string)将引发异常。

请使用int.TryParse(string, out var result)

在您的代码中,应该是

if (!int.TryParse(Console.ReadLine(), out var input1 ||
    !int.TryParse(Console.ReadLine(), out var input2))
{
    Console.WriteLine("You did not enter integers.");
    goto Start;
}

您可以在the .NET documentation

中详细了解该方法。

P.s。顺便说一句,您应该避免在代码中使用goto。但这是另一回事。

答案 1 :(得分:1)

我建议您使用int.TryParse(记录在here中)。

如果输入的不是整数,它将返回false

例如:

int num1;
string input = Console.ReadLine();
if(!int.TryParse(input, out num1))
{
    Console.WriteLine("that's not a valid integer");
}

答案 2 :(得分:-1)

使用正则表达式,empty_check最适合c#检查数字格式。看这个:

  

Regex for numbers only