温度转换值不正确

Temperature Conversion Incorrect values

所以我的作业要求我们创建一个脚本,其中包含两种方法,用于将摄氏温度转换为华氏温度以及从华氏温度转换为摄氏温度。

public static double celsiusTofahrenheit (double Celsius)

public static double fahrenheitToCelsius(double Fahrenheit)

我正在尝试使用这两种方法 return 根据用户输入提供的数字转换结果。我的方法中的 returns 似乎有问题,因为代码给出了正确的值,即将摄氏度转换为华氏度,但我无法将华氏度转换为摄氏度。有人可以澄清我做错了什么吗?任何帮助将不胜感激!!

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);
}

}

我相信你在 fahrenheitToCelsius 中的 return 声明应该是

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

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

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);
}

不要对摄氏度和华氏度使用静态变量。在这种情况下这样做只是在问你发现的问题。而是在静态方法中使用局部变量。只需从 class 中删除静态变量,您就会看到下一步要做什么。

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

这里有很多问题。

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

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

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

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

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);
}