我已经实现了一个以摄氏温度转换温度的类。我的问题是实施温度转换器的最佳方法是什么?这是我用过的解决方案。
public TemperatureConverter(double measurement, String unit) {
if(unit.equals("F")){
result = (measurement - 32) * 5 / 9;
}
else if(unit.equals("K")){
result = measurement + KELVIN_TO_CELSIUS;
}
else if(unit.equals("R")){
result = (5 / 4) * measurement;
}
}
然后, toCelsius 方法。
public double toCelsius() {
return result;
}
该类的属性:
private final double KELVIN_TO_CELSIUS = 273.15;
private double result;
答案 0 :(得分:1)
您的解决方案似乎不完整:
您的计划中的{p>100c
(摄氏度)将为273.15
,就像0c
甚至10000c
仍为273.15
一样,这是错误的,此外,您永远不会输出新的计量单位。
首先,创建一个静态方法(转换不需要一个对象),它接收一个数字,一个条目值的测量单位,以及一个输出值的测量单位,并返回一个数字
public static double convertValue(double value, String to){
if(to.equals("c")){
return value;
} else {
if(to.equals("k")){
return value + 273.15;
} else {
return (value - 32) * 5 / 9;
}
}
}
要使用此功能,请执行System.out.println(TemperatureConverter.convertValue(50, "k"));
或System.out.println(TemperatureConverter.convertValue(50, "f"));
答案 1 :(得分:1)
仅为转换创建新对象不是最好的方法。如果你的课程比这更多,那么他们可能是创建TemperatureConverter
对象的原因。
如果转换是您唯一需要的,那么您可以创建一个通用静态类,它也可以包含您的程序所需的常见任务,或者您可以使用静态函数创建TemperatureConverter
来进行转换。
您可以为每次转化设置单独的静态函数,例如:
double Util.celciusTo(double temp, TempUnit to)
double Util.fahrenheitTo(double temp, TempUnit to)
double Util.kelvinTo(double temp, TempUnit to)
TempUnit
是温度单位枚举。您可以创建Util
类并添加更多实用程序功能,也可以创建包含上述静态函数的TemperatureConverter
,仅用于温度转换。
如果你的TemperatureConverter
做的不仅仅是转换,比如比较温度来排序List
等,那么你可以拥有这样的课程,但是你应该做的事情很少: