2013-04-10 105 views
3

我在這裏做一個簡單的java代碼片段,它是調用將華氏轉換爲攝氏溫度的方法。但是,當我運行它時,輸出始終是0.0Java,從方法中返回一個值

我不能得到它輸出正確的計算。可能有一些我已經忘記做的傻事,有人可以幫我嗎?

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); 
    } 
} 
+3

你會驚訝,但5/9 == 0在Java中的乘法之前執行: )5.0/9是不是.. – 2013-04-10 06:26:29

+0

而不是隻在Java :) – NPE 2013-04-10 06:27:02

回答

7

錯誤是Integer division

在Java 5/9 = 0

嘗試:

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

真棒,我知道它是這樣的小事情,我通常不會被困在這樣的事情。謝謝 – drcoding 2013-04-10 06:30:13

+0

很高興我可以幫助:) – BobTheBuilder 2013-04-10 06:32:48

3

5/9返回0,因爲你執行整數師。

使用5.0/9.0代替

2

(5/9)被解釋爲整數,舍入爲0.0。

爲避免整數,您可以用(5.0/9)替換它。

2

否則,您可以使用下面的代碼

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

(5/9)產生一個整數除法結果是 「0」。結果它爲整個表達式生成0。嘗試

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

這是解決方案。 測試在網上編譯Ideone http://ideone.com/zRyG80

只是return (F - 32) * 5/9;

更換return (5/9) * (F - 32);因爲原因是運營商執行的順序。在你的碼分是正在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

+0

+1在線編譯器和調試工具的省份鏈接 – 2013-04-10 06:46:01

+0

@RamDuttShukla謝謝 – 2013-04-10 06:47:24