温度转换值不正确

时间:2015-04-17 03:15:31

标签: java methods data-conversion

所以我有一项任务要求我们创建一个脚本,其中包含两个方法,从Celsius转换为Fahrenheit,从Fahrenheit转换为Celsius。

public static double celsiusTofahrenheit (double Celsius)

public static double fahrenheitToCelsius(double Fahrenheit)

我试图让两种方法根据用户输入提供的数量返回转换结果。我从方法中返回的东西似乎有问题,因为代码给出了正确的值,即将摄氏温度转换为华氏温度,但我无法将其用于将华氏温度转换为摄氏温度。有人能澄清我做错了什么吗?任何帮助将不胜感激!!

import java.util.Scanner;

public class TempConversionTest{ 

    public static double fahrenheit = 0.0;
    public static double celsius = 0.0;

    public static double celsiusToFahrenheit(double celsius){
    return 5.0/9.0 * fahrenheit - 32;
}

    public static double fahrenheitToCelsius(double fahrenheit){
        return 9.0/5.0 * celsius + 32;
}

public static void main(String[] args){
Scanner input = new Scanner(System.in);

fahrenheit = 0;
celsius = 0;


System.out.println("Enter the Degrees in Fahrenheit");
fahrenheit = input.nextDouble();
celsius = celsiusToFahrenheit(celsius);
System.out.println(fahrenheit + " degrees Fahrenheit converted to Celsius   is: " + celsius);

System.out.println("Enter the Degrees in Celsius");
celsius = input.nextDouble();
fahrenheit = fahrenheitToCelsius(fahrenheit);
System.out.println(celsius + " degrees Celsius converted to Fahrenheit is: " + fahrenheit);
}

}

4 个答案:

答案 0 :(得分:1)

我相信您在fahrenheitToCelsius中的退货声明应为

return (5.0 * (fahrenheit - 32)) / 9;

答案 1 :(得分:1)

您将摄氏度作为参数传递,但在方法中使用华氏度。

public static double celsiusToFahrenheit(double celsius){
   return 9.0/5.0 * celsius + 32;
}



public static double celsiusToFahrenheit(double fahrenheit){
   return 5.0/9.0 * (fahrenheit - 32);
}

答案 2 :(得分:1)

不要将静态变量用于Celsius和Fahrenheit。在这种情况下这样做只是要求你找到的麻烦。而是在静态方法中使用局部变量。只需从类中删除静态变量,您就会看到下一步该做什么。

顺便说一下,我认为通过((C+40)*9/5.0 - 40)将摄氏温度转换为华氏温度更好。换句话说,取两个刻度一致的点(-40 C = -40 F),将其移动到原点,重新缩放,然后再将其移回。

答案 3 :(得分:1)

这里有很多问题。

首先,您的转化方法命名错误,因为celsiusToFahrenheit实际上会尝试将fahrenheit转换为celcius,反之亦然。

其次,fahrenheitcelsius(实际上在celsiusToFahrenheit()方法内)的转换公式应如下所示。请注意,括号 ()会覆盖运算符优先级,因为减法应该首先发生。

public static double celsiusToFahrenheit(double celsius){
    return 5.0/9.0 * (fahrenheit - 32);
}

第三,您的方法应该被很好地封装,并且依赖于静态变量来输入或输出。因此,正确使用传递参数的最终实现应该看起来像

public static double celsiusToFahrenheit(double celsius){
    return 9.0/5.0 * celsius + 32;
}

public static double fahrenheitToCelsius(double fahrenheit){
    return 5.0/9.0 * (fahrenheit - 32);
}