C#计算器循环输入逻辑异常求助:仅支持Yes/No输入功能故障
修正控制台计算器的循环与输入判断逻辑
你的问题核心是输入判断的逻辑条件写反了,同时要满足严格区分大小写的需求。以下是修正后的完整代码,以及关键修改点的说明:
关键修正点
- 将内层循环的判断条件从
value == "yes" || value == "no"改为value != "Yes" && value != "No":这样当用户输入既不是严格的"Yes"也不是"No"时,才会持续提示输入错误。 - 保留外层
do-while循环的判断逻辑,确保仅在输入严格为"Yes"时继续执行计算流程。
修正后的完整代码
using System; namespace calculator_c_sharp { class Program { static void Main(string[] args) { string value; do { Calculate(); ColorPrint("Do you want to continue(Yes/No):", ConsoleColor.Cyan); value = Console.ReadLine(); // 修正:输入非Yes/No时持续提示错误 while (value != "Yes" && value != "No") { ColorPrint("Please enter Yes or No only", ConsoleColor.Yellow); ColorPrint("Do you want to continue(Yes/No):", ConsoleColor.Cyan); value = Console.ReadLine(); } } // 仅输入严格为Yes时,开启下一轮计算 while (value == "Yes"); } static void Calculate() { double count = 0; Console.Write("Enter first number:"); double num1 = Convert.ToDouble(Console.ReadLine()); Console.Write("Enter second number:"); double num2 = Convert.ToDouble(Console.ReadLine()); Console.Write("Enter symbol(/,+,-,*,%):"); string symbol = Console.ReadLine(); try { switch (symbol) { case "+": count = num1 + num2; break; case "-": count = num1 - num2; break; case "*": count = num1 * num2; break; case "/": if (num2 == 0) { throw new DivideByZeroException("Error: Division by zero is not allowed"); } count = num1 / num2; break; case "%": count = num1 % num2; break; default: Console.WriteLine("Wrong input"); break; } ColorPrint("Result " + count, ConsoleColor.Green); } catch (DivideByZeroException ex) { ColorPrint(ex.Message, ConsoleColor.Red); } } static void ColorPrint(string message, ConsoleColor color) { Console.ForegroundColor = color; Console.WriteLine(message); Console.ResetColor(); } } }
注:已移除代码中无用的using System.Reflection.Metadata.Ecma335;命名空间引用。
内容的提问来源于stack exchange,提问作者Ser
相关产品推荐
相关产品推荐

