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

C#入门开发者求教:华氏度转摄氏度程序输入新温度运行异常如何解决

代码问题修复说明

核心错误点

  • 循环内无温度更新逻辑:do-while循环运行过程中没有读取用户新输入的温度、重新计算摄氏度值的逻辑,首次输入的温度值固定后,要么进入死循环重复提示,要么直接跳出循环,完全不会响应后续输入
  • 自定义转换函数未使用:定义的FahrToCel转换函数在主逻辑中完全没有调用,且原函数参数为int类型,和实际读取的double类型华氏度不匹配
  • 判断分支存在漏洞:当温度处于73-77区间但不等于75时,无匹配的判断分支,程序无任何输出提示
  • 浮点数等值判断风险:直接用==判断浮点数是否等于75,容易因为浮点计算精度误差导致判断失效

修复后完整代码

using System;

namespace Bastun1
{
    class Program
    {
        // 修改函数参数为double类型,适配输入的浮点型温度
        public static double FahrToCel(double fahr)
        {
            double cel = (fahr - 32) * 5 / 9;
            return cel;
        }

        public static void Main(string[] args)
        {
            double celsius;
            double fahrenheit;
            do
            {           
                Console.WriteLine("请输入华氏温度:");
                fahrenheit = Convert.ToDouble(Console.ReadLine());
                // 统一调用自定义转换函数
                celsius = FahrToCel(fahrenheit);
            
                Console.WriteLine("转换后的摄氏温度为:" + celsius);
                
                if (celsius > 77)
                {
                    Console.WriteLine($"警告!!当前温度{celsius}过高,请调低温度");
                }
                else if (celsius < 73)
                {
                    Console.WriteLine($"{celsius}温度还未达标,请调高温度");
                }
                // 替换浮点数等值判断为范围判断,避免精度问题
                else if (Math.Abs(celsius - 75) < 0.01)
                {
                    Console.WriteLine("温度完美!享受吧");
                }
                // 补全中间区间的提示
                else
                {
                    Console.WriteLine($"{celsius}处于可接受范围,接近完美温度");
                }
                Console.WriteLine("请按任意键继续。");
                Console.ReadLine();
            }
            while (celsius < 73 || celsius > 77);
            Console.WriteLine($"当前温度为{celsius},温度完美!享受吧");
            Console.ReadKey();
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:45:03