C#计算器除法无法正确显示小数问题排查求助
问题分析与修复方案
核心问题:除法分支逻辑错误
你的代码中,除法计算的逻辑被错误地放在了while (number2 == 0)循环内部:
case '/': while (number2 == 0) { Console.WriteLine("You can't devide by zero idiot"); Console.WriteLine("Please input a valid option"); number2 = Convert.ToDouble(Console.ReadLine()); if (number2 == 0) { continue; } result = Math.Devide(number1, number2); } break;
当你输入的第二个数一开始就不是0(比如2),这个while循环根本不会执行,result始终保持初始值0,所以输出结果就是0.0000000000。
修复方法
将除法计算的代码移到while循环外部,让循环只负责处理除数为0的异常输入,确保无论初始值是否合法,都会执行除法计算:
case '/': while (number2 == 0) { Console.WriteLine("You can't divide by zero"); Console.WriteLine("Please input a valid number:"); number2 = Convert.ToDouble(Console.ReadLine()); } result = Math.Devide(number1, number2); break;
其他需要修正的小问题
方法名拼写错误:
Substract改为SubtractDevide改为Divide
(属于规范问题,符合C#命名习惯和英文拼写规则)
重复输入判断的逻辑错误:
在询问是否继续使用的部分,你读取用户输入后立刻清空了answer:answer = Console.ReadLine().ToUpper(); answer = ""; // 这行直接清空输入,导致后续switch永远走default删掉
answer = "";这行代码,才能正确判断用户输入的Y/N。文字拼写错误:
- "vailid opetion" 改为 "valid option"
- 提示文字里的 "Devide" 统一改为 "Divide"
内容的提问来源于stack exchange,提问作者Fanis Vazimas
相关产品推荐
相关产品推荐

