所以我有一项任务要求我们创建一个脚本,其中包含两个方法,从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);
}
}
答案 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
,反之亦然。
其次,fahrenheit
到celsius
(实际上在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);
}