You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:37:38