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

如何用仅含一个double字段的Temperature类实现温度转换?

解决方案

核心思路是在构造方法中将输入的温度统一转换为某一标准单位(比如开尔文K)存储,无需额外保存单位字段,后续的三个获取方法直接基于这个标准值计算对应单位的温度。

温度转换公式(中文)

  • 开尔文转摄氏度:C = K - 273.15
  • 摄氏度转开尔文:K = C + 273.15
  • 开尔文转华氏度:F = 9.0/5*(K - 273.15) + 32
  • 华氏度转开尔文:K = 5.0/9*(F - 32) + 273.15
  • 摄氏度转华氏度:F = 9.0/5*C + 32
  • 华氏度转摄氏度:C = 5.0/9*(F - 32)

完整实现代码

public class Temperature {
    private final double tm; // 统一存储为开尔文(K)温度

    public Temperature(double tm, char unit) {
        // 根据输入单位,将温度转换为开尔文存储
        switch (Character.toUpperCase(unit)) {
            case 'C':
                this.tm = tm + 273.15;
                break;
            case 'F':
                this.tm = (5.0/9)*(tm - 32) + 273.15;
                break;
            case 'K':
                this.tm = tm;
                break;
            default:
                throw new IllegalArgumentException("不支持的温度单位:" + unit);
        }
    }

    public double getInC(){
        return tm - 273.15;
    }

    public double getInF(){
        return 9.0/5*(tm - 273.15) + 32;
    }

    public double getInK(){
        return tm;
    }
}

代码说明

  1. 构造方法:接收温度值和单位后,将温度统一转换为开尔文存储,后续无需再关注原始单位。
  2. getInC():从存储的开尔文值转换为摄氏度。
  3. getInF():从存储的开尔文值转换为华氏度。
  4. getInK():直接返回存储的开尔文温度值。

你也可以选择其他单位作为存储基准(比如摄氏度),只需调整构造方法中的转换逻辑和三个get方法的计算方式即可。

内容的提问来源于stack exchange,提问作者Shulhin Denys

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:20:29