C#计算器开发需求:输入小数、非exit字符串时输出错误提示
C#控制台计算器输入校验修改方案
完整修改后代码
using System; namespace LabExer2_CMS { class Program { static void Main(string[] args) { int fnum; int snum; int answer; string inputStr; Console.WriteLine("CALCULATOR"); Console.WriteLine(" "); // 第一个数字输入校验 Console.WriteLine("First Number: "); inputStr = Console.ReadLine().Trim(); // 先判断是否是退出命令 if (inputStr.Equals("exit", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("程序已退出"); return; } // 校验是否为合法整数(int.TryParse会自动判定小数、非数字为不合法) if (!int.TryParse(inputStr, out fnum)) { // 判断输入是否包含小数点,对应需求1的小数错误提示 if (inputStr.Contains(".")) { Console.WriteLine("错误:不允许输入小数,请输入有效整数!"); } // 其他非法字符串,对应需求2的错误提示 else { Console.WriteLine("错误:输入内容非法,仅可输入整数、指定运算符或\"exit\"退出程序!"); } Console.ReadKey(); return; } // 运算符输入校验 Console.WriteLine("Select an operator: (+, -, * )"); inputStr = Console.ReadLine().Trim(); if (inputStr.Equals("exit", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("程序已退出"); return; } if (inputStr != "+" && inputStr != "-" && inputStr != "*") { Console.WriteLine("错误:输入内容非法,仅可输入+、-、*运算符或\"exit\"退出程序!"); Console.ReadKey(); return; } string op = inputStr; // 第二个数字输入校验 Console.WriteLine("Second Number: "); inputStr = Console.ReadLine().Trim(); if (inputStr.Equals("exit", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("程序已退出"); return; } if (!int.TryParse(inputStr, out snum)) { if (inputStr.Contains(".")) { Console.WriteLine("错误:不允许输入小数,请输入有效整数!"); } else { Console.WriteLine("错误:输入内容非法,仅可输入整数、指定运算符或\"exit\"退出程序!"); } Console.ReadKey(); return; } // 计算逻辑 if (op == "+") { answer = fnum + snum; Console.WriteLine("The answer is: " + answer); } else if (op == "-") { answer = fnum - snum; Console.WriteLine("The answer is: " + answer); } else if (op == "*") { answer = fnum * snum; Console.WriteLine("The answer is: " + answer); } Console.Write("PRESS ENTER TO EXIT"); Console.ReadKey(); } } }
核心修改说明
- 移除了类中无用的重复字段,将数字类型从
double改为int适配整数输入要求 - 所有输入节点优先校验是否为
exit命令,匹配则直接退出程序 - 数字输入使用
int.TryParse()做合法性判定:- 输入内容包含小数点时触发小数输入错误提示,对应需求1
- 其余非整数且非
exit的输入触发非法字符串错误提示,对应需求2
- 运算符输入仅允许
+/-/*和exit,其余输入触发非法字符串错误提示 - 优化了原有多if判断为else if,避免无效判断逻辑
内容的提问来源于stack exchange,提问作者Heisenberg ggwp
相关产品推荐
相关产品推荐

