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

温度转换程序输出偏差问题:结果均差1个档位不符合预期

问题排查与修复

核心错误点

  • 转换计算与变量更新顺序颠倒:原代码先计算温度转换值,再更新要打印的温度变量a,导致每次输出的转换结果对应上一轮的温度值,出现档位偏差。
  • 摄氏转华氏方法未调用且公式错误:celsius方法从未被执行,且内部公式完全不符合C转F的数学逻辑(正确公式为F = C * 9/5 + 32)。
  • 输出格式化参数错误:用%s格式化double类型变量导致格式混乱,未按预期保留三位小数。
  • 循环终止条件无效:原条件a <= 450因a从-40递增,永远无法触发终止,需调整为合理逻辑。

修复后的代码

public class TempTabl {
    
    public static void main(String[] args) {
        double fahrenheitTemp = 0;
        double celsiusFromF = 0;
        double fahrenheitFromC = 0;
        int z = 0;

        // 打印对齐格式的表头
        System.out.printf("  Temperature    |       Temperature%n");
        System.out.printf("    (degrees)    |        (degrees) %n");
        System.out.printf(" F           C   |      C           F%n");

        // 循环覆盖-40到450的温度区间,步长5
        while (fahrenheitTemp <= 450) {
            fahrenheitTemp = -40 + (5 * z);
            // 计算华氏转摄氏
            celsiusFromF = fahrenheitToCelsius(fahrenheitTemp);
            // 计算摄氏转华氏
            fahrenheitFromC = celsiusToFahrenheit(fahrenheitTemp);
            
            // 格式化输出,保留三位小数并对齐
            System.out.printf(" %-10.3f  %-7.3f | %-10.3f  %-7.3f%n", 
                              fahrenheitTemp, celsiusFromF, 
                              fahrenheitTemp, fahrenheitFromC);
            z++;
        }
    }

    // 华氏转摄氏方法,简化参数传递
    public static double fahrenheitToCelsius(double f) {
        return ((f - 32) * 5) / 9;
    }

    // 摄氏转华氏方法,使用正确公式
    public static double celsiusToFahrenheit(double c) {
        return (c * 9) / 5 + 32;
    }
}

修改说明

  1. 调整计算顺序:先更新当前温度值,再调用转换方法,确保转换结果对应当前要打印的温度。
  2. 修复转换方法:重写celsiusToFahrenheit方法使用正确公式,并在循环中调用该方法获取对应结果。
  3. 优化变量命名:将模糊的变量名改为有意义的名称,提升代码可读性。
  4. 修正输出格式:用%.3f保留三位小数,%-10.3f实现左对齐,匹配预期输出格式。
  5. 调整循环逻辑:基于实际温度值判断终止,确保循环覆盖-40到450的目标区间。

修复后输出示例

Temperature    |       Temperature
    (degrees)    |        (degrees) 
 F           C   |      C           F
 -40.000     -40.000 | -40.000     -40.000
 -35.000     -37.222 | -35.000     -37.222
 -30.000     -34.444 | -30.000     -34.444
 ...

内容的提问来源于stack exchange,提问作者Derrick Louis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:36:07