Java,从方法返回值

Java,从方法返回值,java,methods,return,return-value,Java,Methods,Return,Return Value,我在这里做一段简单的java代码,它是一个将华氏温度转换成摄氏温度的方法。但是,每当我运行它时,输出总是0.0 我无法让它输出正确的计算结果。可能有一些愚蠢的小事我忘了做,有人能帮我吗 public class ExampleQ { public static void main(String[] args) { System.out.println(Celsius(50)); } public static double Celsius(doubl

我在这里做一段简单的java代码,它是一个将华氏温度转换成摄氏温度的方法。但是,每当我运行它时,输出总是
0.0

我无法让它输出正确的计算结果。可能有一些愚蠢的小事我忘了做,有人能帮我吗

public class ExampleQ {

    public static void main(String[] args) {

        System.out.println(Celsius(50));
    }

    public static double Celsius(double F)
    {
        return (5 / 9) * (F - 32);
    }
}
错误是

在Java中
5/9=0

尝试:


5/9
返回0,因为您执行的是整数除法

使用
5.0/9.0
代替(5/9)被解释为整数并四舍五入到0.0


为了避免使用整数,您可以将其替换为(5.0/9)。

或者您可以使用下面的代码

return (5d / 9d) * (F - 32);
(5/9)生成一个整数除法,结果为“0”。因此,它为整个表达式生成0。试一试

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

这是解决办法在线编译器Ideone测试

只需更换
返回(5/9)*(F-32)
返回(F-32)*5/9

因为原因是按照运算符的执行顺序。在您的代码中,除法是在乘法之前执行的,乘法使5/9=0。

class Main {
    public static void main(String[] args) throws java.lang.Exception {

        System.out.println(Celsius(50));
    }

    public static double Celsius(double F) {
        return (F - 32) * 5 / 9;
    }
}
输出


10.0

你可能会感到惊讶,但是5/9==0在Java:)5.0/9不是这样的..而且不仅仅是在Java:)太棒了,我知道它是这样的小东西,我通常不会被这样的事情难倒。感谢+1提供联机编译器和调试工具的链接
class Main {
    public static void main(String[] args) throws java.lang.Exception {

        System.out.println(Celsius(50));
    }

    public static double Celsius(double F) {
        return (F - 32) * 5 / 9;
    }
}