C# while循环嵌套switch计算THI的实现问题求解
修复方案
你现有代码存在3个核心逻辑错误,导致无法输出正确结果:
- 循环增量规则不符合需求:温度初始值设为0、每次自增1,没有按要求从60°F起步、以10为步长递增;相对湿度的内层循环会将rh从0连续自增到101才退出,switch分支完全匹配不到40%、50%这类目标取值,且第一次循环后rh值固定为101,后续温度分支无法触发湿度计算。
- 多层switch嵌套属于冗余逻辑:需求是遍历指定范围内所有温湿度组合计算THI,两层循环按步长遍历即可实现,不需要用switch逐值匹配变量。
- 你编写的
Thi计算公式逻辑正确,测试用例(温度60°F、相对湿度50%)返回值59.45符合预期,这部分无需调整。
符合实验要求的实现代码
以下代码完全使用while循环结构,覆盖所有要求的取值范围,步长设置为10,可直接运行:
using System; namespace _1012Lab3 { class Program { static void Main(string[] args) { double temp = 60; double THI = 0; // 外层while遍历所有温度取值 while (temp <= 100) { // 每个温度节点下,重置湿度初始值为40% double rh = 40; // 内层while遍历当前温度下所有湿度取值 while (rh <= 100) { THI = Thi(temp, rh); Console.WriteLine($"温度:{temp}°F,相对湿度:{rh}%,THI指数:{THI:F2}"); // 湿度按步长10递增 rh += 10; } // 温度按步长10递增 temp += 10; } } static double Thi(double temp1, double RH1) { double RH2 = RH1 / 100; double THI = temp1 - 0.55 * (1 - RH2) * (temp1 - 58); return THI; } } }
实现说明
- 严格遵循实验要求,仅使用while循环结构实现,无多余嵌套,可读性强
- 温度取值范围:60/70/80/90/100°F,符合60-100°F、步长10的要求
- 相对湿度取值范围:40/50/60/70/80/90/100%,符合40%-100%、步长10的要求
- 运行后你提到的测试用例输出为
温度:60°F,相对湿度:50%,THI指数:59.45,和预期计算结果完全一致。
内容的提问来源于stack exchange,提问作者JGray
相关产品推荐
相关产品推荐

