目前有我正在研究的学校项目,这是要求:
编写一个温度类,将保持华氏温度
并提供获取摄氏,华氏,
和开尔文。该类应具有以下字段:
ftemp
:保持华氏温度的双精度数。
该类应具有以下方法:
Constructor
:构造函数接受华氏温度(两倍)并将其存储在ftemp字段中。
setFahrenheit
:设置的华氏温度方法接受华氏温度(两倍)并将其存储在ftemp字段中。
getFahrenheit
:以华氏温度返回ftemp字段的值(无需转换)
getCelsius
:返回转换为摄氏度的ftemp字段的值。使用以下公式转换为摄氏:Celsius = (5/9) * (Fahrenheit - 32)
getKelvin
:返回转换为开尔文的ftemp字段的值。使用以下公式转换为开尔文:Kelvin = ((5/9) * (Fahrenheit - 32)) + 273
通过编写一个单独的程序来演示温度类,该程序向用户询问华氏温度。程序应创建Temperature类的实例,并将用户输入的值传递给构造函数。然后,程序应调用对象的方法以以下格式显示温度(例如,如果华氏温度为-40):
华氏温度是-40.0
摄氏-40.0
Kelvin的温度是233.0
这是我当前的代码:
温度(等级)
public class Temperature {
private double ftemp;
public Temperature(double temp)
{
ftemp = temp;
}
public void setFahrenheit(double t)
{
ftemp = t;
}
public double getFahrenheit()
{
return ftemp;
}
public double getCelsius()
{
return (5/9) * (ftemp - 32);
}
public double getKelvin()
{
return ((5/9) * (ftemp - 32)) + 273;
}
}
MPL1(主要源代码)
import java.util.Scanner;
public class MPL1 {
public static void main(String[] args)
{
double input;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a Fahrenheit temperature: ");
input = keyboard.nextDouble();
Temperature myTemp = new Temperature(input);
System.out.println("The temperature in Fahrenheit is " +
myTemp.getFahrenheit());
System.out.println("The temperature in Celsius is " +
myTemp.getCelsius());
System.out.println("The temperature in Kelvin is " +
myTemp.getKelvin());
}
}
执行后,它几乎可以正确执行所有操作,但是,无论输入什么数字,使用
getCelsius
和getKelvin
都会给出0.0
和273.0
的结果。 最佳答案
5/9
是整数除法,并且由于9被除以5零次,因此5/9 = 0
。而是将其转换为双精度:((double)5/9)
。