C#中如何在循环重启前添加错误提示信息?
解决方案
你的问题出在错误提示的时机不对——原代码没有在输入不符合要求时触发提示,反而可能在正确输入时误显示。正确的做法是:在解析输入后,判断如果输入无效(解析失败或数值为负),再输出错误提示,之后重新进入循环请求输入。
修改后的完整代码如下:
using System; public class Program { public static void Main() { double length; bool isInteger = false; do { Console.WriteLine("Please Enter Length: "); isInteger = double.TryParse(Console.ReadLine(), out length); // 输入无效时显示错误提示 if (!(isInteger && length >= 0)) { Console.WriteLine("Please enter a non-zero or non-negative number"); } } while (!(isInteger && length >= 0)); Console.WriteLine(); Console.WriteLine("You have input: " + length); Console.WriteLine(); double width; bool isInteger2 = false; do { Console.WriteLine("Please Enter Width: "); isInteger2 = double.TryParse(Console.ReadLine(), out width); if (!(isInteger2 && width >= 0)) { Console.WriteLine("Please enter a non-zero or non-negative number"); } } while (!(isInteger2 && width >= 0)); Console.WriteLine(); Console.WriteLine("You have input: " + width); Console.WriteLine(); double height; bool isInteger3 = false; do { Console.WriteLine("Please Enter Height: "); isInteger3 = double.TryParse(Console.ReadLine(), out height); if (!(isInteger3 && height >= 0)) { Console.WriteLine("Please enter a non-zero or non-negative number"); } } while (!(isInteger3 && height >= 0)); Console.WriteLine(); Console.WriteLine("You have input " + height); Console.WriteLine(); } }
关键修改点:
- 把错误提示放在解析输入之后,通过
if (!(isInteger && length >= 0))判断输入是否无效,只有无效时才显示提示 - 移除了原代码中多余的嵌套大括号,让代码结构更清晰
内容的提问来源于stack exchange,提问作者Marc Arsenis
相关产品推荐
相关产品推荐

