C#-如何在此代码上创建非数字的异常

本文关键字:创建 数字 异常 代码 C#- | 更新日期: 2023-09-27 18:28:15

我想创建一个异常,当我键入非数字字符时,最好使用此代码中的Try/catch。我尝试过int.TryParse,但当我使用非数字字符时,它只返回0。但不要向我显示任何错误消息,但使用int.Parse(Console.ReadLine),我得到了一条错误消息:

输入字符字符串的格式不正确。

代码

while (true)
{         
    Console.WriteLine("TYPE A NUMBER HIGHER THAN 20: ");
    int number;
    number = int.Parse(Console.ReadLine());
    if (number> 20)
    {
        Console.WriteLine("O NÚMERO DIGITADO FOI: " + number);
        break;
    }
    else
    {
        Console.WriteLine(number+ " é menor do que 20, favor digitar um número maior");
    }              
}    
Console.ReadLine();

C#-如何在此代码上创建非数字的异常

您可以创建这样的异常:

Console.WriteLine("Type a number: ");
string line = Console.ReadLine();
    try {
        num = Int32.Parse(line);
    } 
    catch (FormatException) {
        Console.WriteLine("{0} is not an integer", line);
    }

或者你可以使用int.TryParse,正如你提到的:

Console.WriteLine("Type a number: ");
string line = Console.ReadLine();
if (!int.TryParse(line, out num)) {
    Console.WriteLine("{0} is not an integer", line);
}

与其抛出异常,不如尝试使用Int32.TryParse(而不是Parse)处理输入:

bool run = true;
while (run)
{
    Console.Write("Type in a number: ");
    string input = Console.ReadLine();
    //Exit application
    if(input == "exit")
    {
        run = false;
        return;
    }
    //Returns true if numberStr can be parsed to an int
    int number;
    if (Int32.TryParse(input, out number))
    {
        //input is a number, now let's do some logic!
        if(number > 20)
            Console.WriteLine("Number is greater than 20!");
        else
            Console.WriteLine("Number is less than 20!");
    }
    else
        Console.WriteLine("Doesn't seem to be a number: " + number);
}
Console.ReadLine();