Java 温度转换值不正确
所以我有一个任务,需要我们创建一个脚本,其中包含两个方法,从摄氏度转换为华氏度,从华氏度转换为摄氏度Java 温度转换值不正确,java,methods,data-conversion,Java,Methods,Data Conversion,所以我有一个任务,需要我们创建一个脚本,其中包含两个方法,从摄氏度转换为华氏度,从华氏度转换为摄氏度 public static double celsiusTofahrenheit (double Celsius) public static double fahrenheitToCelsius(double Fahrenheit) 我试图让这两个方法根据用户输入的数字返回转换结果。我从方法返回的结果似乎有问题,因为代码给出了正确的值,即将摄氏度转换为华氏度,但我无法将其用于将华氏度转换为
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);
}
}
我相信您在
华氏摄氏度中的返回声明应该是
return (5.0 * (fahrenheit - 32)) / 9;
我相信您在华氏摄氏度中的返回声明应该是
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);
}
您正在将摄氏度作为参数传递,但在方法中使用华氏度
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);
}
不要对摄氏度和华氏度使用静态变量。在这种情况下,这样做只不过是自找麻烦。而是在静态方法中使用局部变量。只需从类中删除静态变量,您将看到接下来要做什么
顺便说一句,我认为通过((C+40)*9/5.0-40)
将摄氏度转换为华氏度更好。换句话说,取两个刻度一致的点(-40 C=-40 F),将其移到原点,重新缩放,然后再移回原点。不要对摄氏度和华氏度使用静态变量。在这种情况下,这样做只不过是自找麻烦。而是在静态方法中使用局部变量。只需从类中删除静态变量,您将看到接下来要做什么
顺便说一句,我认为通过((C+40)*9/5.0-40)
将摄氏度转换为华氏度更好。换句话说,取两个刻度一致的点(-40 C=-40 F),将其移到原点,重新缩放,然后再移回原点。这里有许多问题
首先,您的转换方法命名错误,因为celsiusToFahrenheit
实际上试图将fahrenheit
转换为celcius
,反之亦然
其次,华氏
到摄氏
的转换公式(实际上在celsiustofahernheit()
方法中)应如下所示。请注意,括号()
用于覆盖运算符优先级,因为减法应该首先发生
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);
}
这里有很多问题
首先,您的转换方法命名错误,因为celsiusToFahrenheit
实际上试图将fahrenheit
转换为celcius
,反之亦然
其次,华氏
到摄氏
的转换公式(实际上在celsiustofahernheit()
方法中)应如下所示。请注意,括号()
用于覆盖运算符优先级,因为减法应该首先发生
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);
}
删除静态变量删除静态变量粘贴的两种方法中都有相同的算法。谢谢Trout,但是在将方法从双摄氏度替换为双华氏度后,在华氏度转换上运行脚本时,我仍然得到了错误的值。我的说明非常具体,我的方法应该保持原样,因为这是他想要评分的内容之一,我的温度转换也是如此。如果你能看到任何其他错误或指向我的正确方向,我将不胜感激!我总是错配这些公式——从七年级开始;)您粘贴的两个方法中都有相同的算法。谢谢Trout,但是在将方法从双摄氏度替换为双华氏度后,在华氏度转换上运行脚本时,我仍然得到错误的值。我的说明非常具体,我的方法应该保持原样,因为这是他想要评分的内容之一,我的温度转换也是如此。如果你能看到任何其他错误或指向我的正确方向,我将不胜感激!我总是错配这些公式——从七年级开始;)我不是落选者,但那是错误的公式。@pbabcdefp也许我太累了,但有什么问题吗?@pbabcdefp经过测试,我得到的结果和谷歌一样。我认为应该是返回(5.0*(华氏-32))/9
。不,落选者,但很明显,这是没有意义的:你说它是华氏摄氏度
,当然它应该有华氏度
作为公式的输入,但是你的公式是以摄氏度
作为输入的,我不是下一个投票人,但那是错误的公式。@pbabcdefp也许我太累了,但是有什么问题吗?@pbabcdefp经过测试,我得到的结果和谷歌一样。我觉得应该是return(5.0*(华氏温度-32))/9
。不,是downvoter,但显然这没有意义:你说它是华氏摄氏度
,当然它应该有华氏度
作为公式的输入,但是你的公式是以摄氏度
为单位的,不幸的是,我正在使用我的说明中提供的转换进行评分。我想,创造力和游戏的选择已经减少,以使评分更容易。太糟糕了。无论如何,仔细看看你的公式。至少在