2011-04-15 33 views
2

我正在爲我的Java類編寫程序,並且我們被要求使用GUI設計一個程序,該程序接受溫度值並將其轉換爲其他值,例如從華氏溫度到攝氏溫度和開爾文溫度。我碰到的一個問題,但:成功將字符串解析爲Double,但後續所有計算都失敗

if (event.getSource() == fahrText) 
       { 
       string = event.getActionCommand(); 
       tempF = Double.parseDouble(string); 
       tempC = (tempF - 32) * (5/9); 
       tempK = tempC + 273.15; 
       resultF.setText("Fahr: " + tempF); 
       resultC.setText("Cels: " + tempC); 
       resultK.setText("Kelv: " + tempK); 
      } 

不管我進入「fahrText」的JTextField什麼號碼我得到攝氏0,而tempF顯示我輸入的值。有什麼建議,爲什麼?我用Double.valueOf(字符串)具有相同的結果。

回答

5

嘗試5.0/9.0 - 5/9是整數除法,並且等於0.整數除法爲您提供了一個整數 - 無論您將結果分配給哪種類型。

你也可以保留一個private final static double FToCFactor = 5.0/9.0;左右,並與此相乘。

+0

謝謝,它已經修復了! – Colton 2011-04-15 18:08:22

2

表達

5/9 

表示整數除法。該表達式的結果是0

你想要的是一個浮點除法。它可以與

5.0/9.0 
+0

真棒,現在一切正常。謝謝! – Colton 2011-04-15 18:05:55

2

使用雙常數(例如,32.0d),而不是爲所有數學的整數來實現。你正在做整數數學而不是浮點數學。

+0

謝謝!我有點尷尬,不敢相信我沒有看到它。我想我太專注於程序的GUI方面。 – Colton 2011-04-15 18:07:00