如何确保在用字符串回答整数时不会导致应用程序崩溃

21 浏览
0 Comments

如何确保在用字符串回答整数时不会导致应用程序崩溃

我有一个控制台应用程序,其中有一个int变量。我需要从用户那里读取输入,并确保如果输入无法转换为整数值,我能告诉用户他们输入了无效答案。我该如何做到这一点?以下是我目前的代码:\n

class Program
{
    static void Main(string[] args)
    {
    Start:
        Console.WriteLine("请输入两个数字");
        int input1;
        bool isValidInput1 = int.TryParse(Console.ReadLine(), out input1);
        int input2;
        bool isValidInput2 = int.TryParse(Console.ReadLine(), out input2);
        
        if (!isValidInput1 || !isValidInput2)
        {
            Console.WriteLine("无效的输入");
        }
        else if (input1 + input2 == 3)
        {
            Console.WriteLine("输入的数字之和为3");
        }
        else if (input1 + input2 == 10)
        {
            Console.WriteLine("输入的数字之和为10");
        }
        else
        {
            Console.WriteLine("输入的数字之和不是3也不是10");
        }
        
        goto Start;
    }
}

0
0 Comments

问题的出现原因:当一个应用程序要求用户输入一个整数,并且用户却输入了一个字符串时,应用程序可能会崩溃。

解决方法:我们可以使用正则表达式来检查数字格式。在C#中,最好使用Regex来实现。可以参考以下链接:Regex for numbers only

此外,我们还可以使用int.TryParse方法,因为它不需要编写自己的逻辑来验证数字格式。

需要注意的是,正则表达式并不是万能的,有时候它并不是最好的解决方案。

0
0 Comments

在应用程序中遇到整数和字符串混淆的情况时,可能会导致应用程序崩溃。解决这个问题的方法是使用int.TryParse函数。

int.TryParse函数是一个内置函数,用于将字符串转换为整数。它会尝试将字符串转换为整数,并返回一个布尔值,指示转换是否成功。如果转换成功,它会将转换后的整数存储在指定的变量中;如果转换失败,它会返回false

下面是一个示例代码,展示了如何使用int.TryParse函数来避免应用程序崩溃:

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

在这个例子中,首先定义了一个整数变量num1。然后,通过Console.ReadLine()函数获取用户输入的字符串,并将其存储在input变量中。接下来,使用int.TryParse函数尝试将input转换为整数,并将转换结果存储在num1变量中。如果转换失败,int.TryParse函数会返回false,并执行Console.WriteLine函数输出错误信息。

通过使用int.TryParse函数,可以确保在用户输入字符串而不是整数时,应用程序不会崩溃。这是一种简单而有效的方法来处理整数和字符串混淆的情况。

0
0 Comments

当使用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;
}

你可以在.NET文档中了解更多关于这个方法的信息。

另外,顺便提一下,应该避免在代码中使用goto语句。但这是另一个问题。

0