为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
相关产品推荐
相关产品推荐

