【问题标题】:Java, returning a value from a methodJava,从方法返回值
【发布时间】:2013-04-10 06:24:46
【问题描述】:

我在这里做了一段简单的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.0/9 不是……
  • 不仅在 Java 中 :)

标签: java methods return return-value


【解决方案1】:

错误是Integer division

在Java中5 / 9 = 0

试试:

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

【讨论】:

  • 太棒了,我知道它是那样的小东西,我通常不会被这样的东西难倒。谢谢
【解决方案2】:

(5/9) 产生整数除法,结果为“0”。结果,它为整个表达式生成 0。试试

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

【讨论】:

    【解决方案3】:

    这里是解决方案。 在线编译器Ideone测试http://ideone.com/zRyG80

    只需将return (5 / 9) * (F - 32); 替换为return (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

    【讨论】:

    • +1 用于提供在线编译器和调试工具的链接
    【解决方案4】:

    5 / 9 返回 0,因为您正在执行 integer 除法。

    改用5.0 / 9.0

    【讨论】:

      【解决方案5】:

      (5/9) 被解释为整数并四舍五入为 0.0。

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

      【讨论】:

        【解决方案6】:

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

        return (5d / 9d) * (F - 32);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-10
          • 1970-01-01
          • 2014-09-05
          • 2021-05-10
          • 2012-12-18
          • 2013-08-21
          • 1970-01-01
          • 2012-09-20
          相关资源
          最近更新 更多