2016-04-21 77 views
0

我想把我的华氏温度,并将其转换为摄氏温度。当我打电话给toCelsius()方法时,它会将温度计算为0摄氏度。为什么我的温度转换不能正确计算?

这里是我的转换方法

public Temperature toCelsius() 
    { 
    Temperature answer = new Temperature(); 
    switch(tempType) 
    { 
    case 'C': 
     answer = new Temperature(this.temp,'C'); 
     return answer; 
    case 'F': 
     answer = new Temperature(((this.temp-32)*(5/9)),'C'); 
     return answer; 

    case 'K': 
     answer = new Temperature((this.temp-241.15),'C'); 
     return answer; 

    default: 
     System.out.println("ERROR!"); 
     break; 

    } 
    return answer; 
    } 

这里是我的演示

public class TempDemo { 

     public static void main(String[] args) { 

      Temperature temp1 = new Temperature(122, 'F'); 
      System.out.println(temp1.toCelsius()); 
     } 

    } 
+4

司整数不会产生一个十进制数,我认为。 '5/9'等于'0'。我认为你必须使用'double'。 – Gendarme

回答

2

59int文字,因此,将其划分将做使用integer division - 也就是说,它只会在需要整个部门的一部分。由于5小于9,这将导致0,因此整个乘法也是如此。

相反,你应该使用double文字:

answer = new Temperature(((this.temp-32)*(5.0/9.0)), 'C'); 
+0

如果你想保留一个'int'值,你可以做'(this.temp - 32)* 5/9'并且得到一个很好的答案。 +1 –

相关问题