目前有我正在研究的学校项目,这是要求:


  编写一个温度类,将保持华氏温度
  并提供获取摄氏,华氏,
  和开尔文。该类应具有以下字段:
  
  
  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());

    }
}


执行后,它几乎可以正确执行所有操作,但是,无论输入什么数字,使用getCelsiusgetKelvin都会给出0.0273.0的结果。

最佳答案

5/9是整数除法,并且由于9被除以5零次,因此5/9 = 0。而是将其转换为双精度:((double)5/9)

10-08 07:15