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

C#实现多步计算器时While循环未执行的问题求助

问题分析与修复方案

核心错误:多余分号导致逻辑完全失效

你的代码里所有if和while语句末尾都加了分号,这是直接导致问题的原因:

  • while (end == false); 中的分号会让循环体变成空语句,后面的大括号和循环毫无关系,只会执行一次就结束程序,根本不会进入循环等待后续输入。
  • if (op1 == "*"); 这种写法会让if条件判断后执行空语句,后面的代码块不管条件是否成立都会执行,导致运算逻辑混乱。

修复后的完整代码

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            bool end = false;
            double answer = 0.0;

            // 读取初始运算的数字和运算符
            double num1 = Convert.ToDouble(Console.ReadLine());
            string op1 = Console.ReadLine();
            double num2 = Convert.ToDouble(Console.ReadLine());

            // 执行初始运算
            if (op1 == "*")
            {
                answer = num1 * num2;
            }
            else if (op1 == "/")
            {
                answer = num1 / num2;
            }
            else if (op1 == "+")
            {
                answer = num1 + num2;
            }
            else if (op1 == "-")
            {
                answer = num1 - num2;
            }

            // 多步运算循环
            while (!end)
            {
                string op2 = Console.ReadLine();

                if (op2 == "*")
                {
                    double num3 = Convert.ToDouble(Console.ReadLine());
                    answer *= num3;
                }
                else if (op2 == "/")
                {
                    double num3 = Convert.ToDouble(Console.ReadLine());
                    answer /= num3;
                }
                else if (op2 == "+")
                {
                    double num3 = Convert.ToDouble(Console.ReadLine());
                    answer += num3;
                }
                else if (op2 == "-")
                {
                    double num3 = Convert.ToDouble(Console.ReadLine());
                    answer -= num3;
                }
                else if (op2 == "=")
                {
                    Console.WriteLine(answer);
                    end = true;
                }
            }
        }
    }
}

额外优化说明

  • 将独立的if改为else if,避免不必要的条件判断,提升代码效率。
  • 简化赋值语句,比如answer = answer * num3改为answer *= num3,代码更简洁。
  • 移除了无用的calc1变量和多余的System.Data引用。
  • 可进一步添加输入合法性校验(比如非数字、非法运算符的处理),避免程序崩溃。

内容的提问来源于stack exchange,提问作者user19748230

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:06:52