温度主要以三种单位测量:摄氏度,
华氏度和开尔文。很容易将它们中的任何一个转换为
另外两个:
Kelvin to Celsius: C = K - 273.15
Celsius to Kelvin: K = C + 273.15
Kelvin to Fahrenheit: F = 9./5*(K - 273.15) + 32
Fahrenheit to Kelvin: K = 5./9*(F - 32) + 273.15
Celsius to Fahrenheit: F = 9./5*C + 32
Fahrenheit to Celsius: C = 5./9*(F - 32)
写课Temperature
拥有一个(而且只有一个!)私有字段
类型double
;该类的对象描述温度。班上
有一个构造函数和三个方法:
-
Temperature(double tm, char unit)
— 构造函数获取温度(作为double
)和所用单位符号:“C”代表
摄氏度,“F”代表华氏度,“K”代表开尔文;
-
三种方法(“getters”)返回对象表示的温度,但单位不同:
public double getInC()
public double getInF()
public double getInK()
我真的不明白如果我们没有 char 类型的字段并且无法将任何参数传递到函数中,该怎么办,如何解决?
以下是我到目前为止所拥有的。显然还达不到要求。
public class Temperature {
private final double tm;
public Temperature(double tm, char unit) {
this.tm = tm;
}
public double getInC(){
}
public double getInF(){
}
public double getInK(){
}
}
只需为单位创建一个字段即可,那么您就拥有了进行转换所需的所有信息:
public class Temperature {
private final double tm;
private final char unit;
public Temperature(double tm, char unit) {
this.tm = tm;
this.unit = unit;
}
public double getInC() {
// TODO: conversion
}
public double getInF() {
// TODO: conversion
}
public double getInK() {
// TODO: conversion
}
@Override
public String toString() {
return tm + "" + unit;
}
}
顺便说一句,你这里的东西叫做 '值对象',建议添加一个toString()
方法,以便您可以根据需要打印温度(稍后还添加equals
and hashcode
按值比较实例的方法)。
如果您不想添加字段,则可以使用替代解决方案:将构造函数中给出的温度转换为内部单位(建议:以K为单位),然后转换为所需的开尔文温度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)