如何在Main方法中两次调用方法获取并显示正双精度值
解决思路与重构代码
你的核心需求是复用输入逻辑,获取两个正的double值,原代码存在参数不匹配、逻辑断裂的问题,重构方案如下:
问题分析
- 原方法
VolumeAndCost定义了参数但调用时未传参,编译不通过; - 输入油量后如果合法直接返回,导致油价输入的代码永远执行不到;
- 错误输入仅重试一次,无法保证最终得到合法值。
重构代码
我们可以写一个通用的方法来处理「提示输入+验证正数值」的逻辑,然后调用两次分别获取油量和油价:
using System; class Program { public static void Main(string[] args) { // 调用两次通用方法,分别获取油量和油价 double litresOfFuel = GetPositiveDouble("请输入加入汽车的燃油升数:"); double costOfFuel = GetPositiveDouble("请输入燃油的单价(美元,保留小数):"); // 输出结果 Console.WriteLine($"你输入的燃油升数:{litresOfFuel}"); Console.WriteLine($"你输入的燃油单价:{costOfFuel}"); } // 通用方法:获取用户输入的正double值,循环直到输入合法 public static double GetPositiveDouble(string prompt) { double inputValue; while (true) { Console.WriteLine(prompt); // 先验证输入是否能转成double,再判断是否为正数 if (double.TryParse(Console.ReadLine(), out inputValue) && inputValue > 0) { return inputValue; } else { Console.WriteLine("请输入一个有效的正数!"); } } } }
代码说明
GetPositiveDouble方法接收提示文本作为参数,内部用while(true)循环,直到用户输入合法的正浮点数才返回;- 使用
double.TryParse避免输入非数字时抛出异常,比直接Convert.ToDouble更安全; - Main方法中两次调用该方法,分别拿到两个值后直接显示即可。
内容的提问来源于stack exchange,提问作者Don Boss
相关产品推荐
相关产品推荐

