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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:06:16