目前正在进行的学校项目,以下是要求:
写一个温度等级,它将保持华氏温度 并提供获得华氏温度摄氏温度的方法 和凯文。该类应具有以下字段:
ftemp
:持有华氏温度的双倍。该课程应具备以下方法:
Constructor
:构造函数接受华氏温度(作为双精度)并将其存储在ftemp字段中。setFahrenheit
:设置的Fahrenheit方法接受华氏温度(作为双精度)并将其存储在ftemp字段中。getFahrenheit
:返回ftemp字段的值作为华氏温度(无需转换)getCelsius
:返回转换为摄氏度的ftemp字段的值。使用以下公式转换为摄氏度:Celsius = (5/9) * (Fahrenheit - 32)
getKelvin
:返回转换为开尔文的ftemp字段的值。使用以下公式转换为开尔文:Kelvin = ((5/9) * (Fahrenheit - 32)) + 273
通过编写单独的程序演示温度等级,询问用户华氏温度。程序应该创建一个Temperature类的实例,并将用户输入的值传递给构造函数。然后,程序应调用对象的方法以下列格式显示温度(例如,如果华氏温度为-40):
- 华氏温度为-40.0
- 摄氏温度为-40.0
- 以开尔文为单位的温度为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;
}
}
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
的结果,无论输入的是什么号码。
答案 0 :(得分:4)
5/9
是整数除法,因为9分为5次零5/9 = 0
。将其转换为双倍:((double)5/9)
。
答案 1 :(得分:4)
5/9 == 0
因为5
和9
都是int
文字。您需要明确使用浮点文字:
return (5.0/9.0) * (ftemp - 32.0);
return ((5.0/9.0) * (ftemp - 32.0)) + 273.15;