Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 温度转换值不正确_Java_Methods_Data Conversion - Fatal编程技术网

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,但显然这没有意义:你说它是
华氏摄氏度
,当然它应该有
华氏度
作为公式的输入,但是你的公式是以
摄氏度
为单位的,不幸的是,我正在使用我的说明中提供的转换进行评分。我想,创造力和游戏的选择已经减少,以使评分更容易。太糟糕了。无论如何,仔细看看你的公式。至少在