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
相关产品推荐
相关产品推荐

