类方法没有执行正确的计算

时间:2014-10-25 17:01:49

标签: java class methods

目前正在进行的学校项目,以下是要求:

  

写一个温度等级,它将保持华氏温度   并提供获得华氏温度摄氏温度的方法   和凯文。该类应具有以下字段:

     
      
  • 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;

    }

}

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的结果,无论输入的是什么号码。

2 个答案:

答案 0 :(得分:4)

5/9是整数除法,因为9分为5次零5/9 = 0。将其转换为双倍:((double)5/9)

答案 1 :(得分:4)

Java中的

5/9 == 0因为59都是int文字。您需要明确使用浮点文字:

return (5.0/9.0) * (ftemp - 32.0);

return ((5.0/9.0) * (ftemp - 32.0)) + 273.15;

请参阅Primitive Data Types