You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为C#简易计算器添加小数输入时的错误提示功能

解决C#简易计算器输入小数触发异常的问题

你的代码当前使用Convert.ToInt32直接转换用户输入,一旦输入小数(比如"2.5")或者非数字内容,就会抛出未处理的FormatException。要实现输入错误时弹出提示而非崩溃,核心是用安全的类型转换方法做输入验证,这里推荐使用int.TryParse,它会返回转换是否成功的结果,同时输出转换后的整数。

修改后的完整代码

do
{
    int x = 0;
    bool isXValid = false;
    // 循环获取X的输入,直到输入有效或退出
    while (!isXValid)
    {
        Console.Write("X = ");
        string strX = Console.ReadLine();
        // 忽略大小写判断exit,提升用户体验
        if (strX.Equals("exit", StringComparison.OrdinalIgnoreCase))
        {
            Console.WriteLine("程序已终止");
            return;
        }
        // 尝试转换为整数,成功则标记有效并跳出循环
        if (int.TryParse(strX, out x))
        {
            isXValid = true;
        }
        else
        {
            Console.WriteLine("错误:请输入有效的整数,禁止输入小数或非数字字符!");
        }
    }

    int y = 0;
    bool isYValid = false;
    // 同样的方式处理Y的输入
    while (!isYValid)
    {
        Console.Write("Y = ");
        string strY = Console.ReadLine();
        if (strY.Equals("exit", StringComparison.OrdinalIgnoreCase))
        {
            Console.WriteLine("程序已终止");
            return;
        }
        if (int.TryParse(strY, out y))
        {
            isYValid = true;
        }
        else
        {
            Console.WriteLine("错误:请输入有效的整数,禁止输入小数或非数字字符!");
        }
    }

    Console.WriteLine("请选择运算操作: +, -, *, /");
    string operation = Console.ReadLine();

    switch (operation)
    {
        case "+":
            Console.WriteLine($"计算结果: {x + y}");
            break;
        case "-":
            Console.WriteLine($"计算结果: {x - y}");
            break;
        case "*":
            Console.WriteLine($"计算结果: {x * y}");
            break;
        case "/":
            // 额外处理除零异常,避免程序崩溃
            if (y == 0)
            {
                Console.WriteLine("错误:除数不能为0!");
            }
            else
            {
                Console.WriteLine($"计算结果: {x / y}");
            }
            break;
        default:
            Console.WriteLine("错误:请输入有效的运算符号!");
            break;
    }
} while (true);

关键修改点说明

  • 输入验证:用int.TryParse替代Convert.ToInt32,转换失败时直接提示错误,而非抛出异常
  • 循环输入:对X和Y分别做循环输入处理,直到用户输入合法整数或输入exit退出
  • 体验优化:忽略exit的大小写,用户输入Exit或EXIT也能正常退出
  • 额外异常处理:增加除法时的除零判断,避免另一种未处理异常

内容的提问来源于stack exchange,提问作者Soyabeancurd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:46:26