我正在为我的Java类编写程序,我们被要求使用GUI设计一个程序,该程序接受温度值并转换为其他程序,例如从华氏温度到摄氏温度和开尔文温度。我遇到了一个问题:
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的是什么数字,我都将Celsius设为0,而tempF显示我输入的值。有什么建议吗?我使用Double.valueOf(string)得到了相同的结果。
答案 0 :(得分:5)
尝试5.0/9.0
- 5/9
是整数除法,并且等于0.整数除法为您提供一个整数 - 无论您将结果分配给哪种类型。
您还可以保持private final static double FToCFactor = 5.0/9.0;
左右并与之相乘。
答案 1 :(得分:2)
表达式
5/9
表示整数除法。该表达式的结果是0
。
你想要的是浮点除法。它可以通过
来实现5.0/9.0
答案 2 :(得分:2)
对所有数学运算使用双常数(例如32.0d
)而不是整数。你最终会做整数数学而不是浮点数学。