用户键入字符串而不是int(崩溃控制台)

时间:2018-06-01 01:34:52

标签: c#

我在寻找一个问题的30秒内找不到任何c#示例,但我遇到了问题。当用户键入一个字符串而不是一个整数时,控制台崩溃了,我无法终身处理这个异常。

    static void Main(string[] args)
    {

        Console.Write("Age: ");
        int Age = Convert.ToInt32(Console.ReadLine());

        Console.ReadKey();

    }

2 个答案:

答案 0 :(得分:0)

您正在通过Convert.ToInt32将用户在控制台中输入的任何内容转换为整数而不检查用户输入的任何内容是actaully有效数字字符串或任何其他字母数字字符串(或纯粹的aplhabatic或特殊字符)

在投射时,您必须确保用户的输入是否为有效数字。

您可以使用TryParse代替Convert.ToInt32。如下,

int.TryParse(Console.ReadLine(), out Age);

更有趣的是,此方法也返回一个布尔值。如果转换是succssfull那么它将返回true,否则为false。因此,如果您的进一步逻辑在Age上不顺畅,则可以阻止它在用户未输入有效输入时执行。

如下所示。

while(true)
{
    if (int.TryParse(Console.ReadLine(), out Age))
    {
        break;
    }
    else
    {
        Console.WriteLine("Invalid input for age, please enter again");
    }
}
//from here your further logic

我也在google上找到了30秒的解决方案,令人惊讶的是我找到了许多有趣的链接

Google

MSDN

https://stackify.com/convert-csharp-string-int/

Is there a try Convert.ToInt32... avoiding exceptions

答案 1 :(得分:0)

static void Main(string[] args)
{
    Try{
    Console.Write("Age: ");
    int Age = Convert.ToInt32(Console.ReadLine());

    Console.ReadKey();
    }
    Catch (Exception e){
    Console.writeLine(e)
    }

}