Java为什么这会给我“0”?

时间:2015-01-21 19:30:33

标签: java class math printing output

所以这是我正在使用的代码的一部分,我们应该首先修复一些逻辑错误,因为错误的答案。我发现了一些语法错误,这些错误也不会让编译器完成......我对fToC一直保持“0”......

//declaration statements
final int BOILING_IN_F = 212;
int fToC;
string output;

//there is other code between that has nothing
//to do with outputting the boiling point.

fToC = (5/9) * (BOILING_IN_F - 32);
output = BOILING_IN_F + " in Fahrenheit is " + fToC
             + " in Celsius.";
System.out.println(output); //this is outputting 0 for fToC
System.out.println();

答案很有用,除了我需要在编译和运行程序之前将fToC声明为double。谢谢。

3 个答案:

答案 0 :(得分:2)

您正在使用5/9执行Java的整数除法,这必须产生另一个整数 - 0,因此结果为0。使用double文字来强制浮点数学。

fToC = (5.0/9.0) * (BOILING_IN_F - 32);

您需要fToC成为double(并将拼写错误string output更改为String output)。

答案 1 :(得分:1)

由于int划分,

(5/9)为0。试试(5.0/9)

完整的表达应该是:

fToC = (5.0/9) * (BOILING_IN_F - 32);

答案 2 :(得分:1)

(5/9)你正在潜水两个整数,所以这是截断的,所以它等于0.你将那个0与另一个数相乘。

改为使用(5.0f/9.0f)来确定您的号码实际上是十进制数。