【问题标题】:A Method that returns true if the Temperature objects represents a temp below freezing point (JAVA)如果温度对象表示低于冰点的温度 (JAVA),则返回 true 的方法
【发布时间】:2009-11-20 02:52:39
【问题描述】:

我正在尝试编写一个名为 isLowerThanFreezing 的方法,如果温度对象表示低于水的冰点(32.0 F、0.0 C 或 273.15 K)的温度,则返回 true,否则返回 false。该方法应仅包括一个不等式(即,使用 或 >= 形成的一个比较),这可以通过在与那个规模的冰点。我已经有一个方法可以进行必要的转换,但我不完全确定如何构建整个方法

非常感谢任何帮助!谢谢

public boolean isLowerThanFreezing(double value, char scale) {
    if (Temperature <= (0.0) 'C') {
        convertTo();
        return true;
    } else {
        return false;
    }
}

convertTo 是我用于转换的方法

【问题讨论】:

  • 先告诉我们你得到了什么,我们可以帮助调试。一般来说,这里的人不会为作业问题提供解决方案。

标签: java object boolean


【解决方案1】:

我想我会在Temperature类中实现接口Comparable,以及这个接口的实现:

class Temperature implements Comparable<Temperature> {
    private double kelvinTemperature; // Kelvin is probably the better scale to store a temperature 
    public int compareTo(Temperature t) {
        if(t.kelvinTemperature > this.kelvinTemperature)
            return 1;
        else if (t.kelvinTemperature < this.kelvinTemperature)
            return -1;
        else
            return 0; 
    }
}

我还会添加一些静态工厂方法,例如:

public static Temperature fromCelsius(double celsiusTemperature)

我会为已知温度创建一些常数,例如水的冰点:

public static Temperature WATER_FREEZING_POINT = Temperature.fromCelsius(0.0);

然后这将是一个比较然后两者的问题:

boolean belowFreezing = temperatureInstance.compareTo(WATER_FREEZING_POINT) < 0;

如果您不需要额外的精度,也许您应该只使用一个整数来表示温度。你不是在处理金钱,所以 double 应该足够了,但如果不是,那么也许 BigDecimal 更合适。

这个实现完全封装了你的数字比较代码,它也不会用像“isBelowFreezingPoint()”这样的方法来膨胀实现

【讨论】:

    【解决方案2】:

    return this.toCelsius() &lt; 0.0;

    【讨论】:

    • 虽然这听起来像是功课,但它仍然是讨论对象封装的好话题。
    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多