C#控制台程序如何实现输入字符串时返回错误提示而非崩溃
C# 数值输入兼容非数值校验实现方案
核心修改逻辑
- 替换原代码中的
Convert.ToDouble()为double.TryParse()执行安全类型转换,非数值输入不会触发程序崩溃 - 合并格式校验、数值范围校验逻辑,两种非法输入场景复用同一套重试提示逻辑
优化后代码
double firstGrade; Console.Write("First Grade: "); // 任意非法场景(转换失败/数值小于0/数值大于100)都会进入重试循环 while (!double.TryParse(Console.ReadLine(), out firstGrade) || firstGrade < 0 || firstGrade > 100) { Console.Write("Please input a number that is greater than or equal to 0 but less than or equal to 100: "); } Console.WriteLine();
逻辑说明
double.TryParse()会尝试把输入字符串转换为双精度浮点数,转换成功返回true,同时把转换结果赋值给out修饰的firstGrade参数;转换失败则返回false,不会抛出异常。
循环判断条件中只要满足「转换失败」「数值小于0」「数值大于100」任意一种情况,就会触发重试提示,完全匹配非数值输入和范围超限输入复用同一处理逻辑的需求。
内容的提问来源于stack exchange,提问作者yam
相关产品推荐
相关产品推荐

