Java温度转换错误

时间:2014-12-03 14:25:12

标签: java calculator

我已经完成了这个程序,但无法弄清楚出了什么问题,基本上它是C-> F,F-> C,C-> K,K-> C的转换器, F-> K,K-> F.顺便说一句,这是我在这个网站上的第一个问题,我使用的是Bluej。当我尝试转换它时,我得到一个错误的答案,但我的公式都是正确的(在谷歌检查)...



/**
 * Program to 
 * 
 * Anirudh Gupta
 * th August 2014
 */
import java.io.*;
public class Temperature
{
   public static void main () throws IOException
   {
       InputStreamReader isr=new InputStreamReader(System.in);
       BufferedReader br=new BufferedReader(isr);
       System.out.println("Enter choice of scale in which current temperature in:");
       System.out.println(" 1)Celsius");
       System.out.println(" 2)Fahrenheit");
       System.out.println(" 3)Kelvin");
       int no=Integer.parseInt(br.readLine());
       double ans;
       switch(no)
       {
           case 1:
                System.out.println("Enter temperature to convert(in °C)");
                double C=Double.parseDouble(br.readLine());
                System.out.println("Enter choice of scale to which current temperature should be converted");
                System.out.println("1)Fahrenheit");
                System.out.println("2)Kelvin");
                int no1=Integer.parseInt(br.readLine());
                switch(no1)
                {
                    case 1:
                           ans=((9*C)/5)+32;
                           System.out.println(ans+"°F");
                           break;
                    case 2:
                           ans=C+273;
                           System.out.println(ans+"K");
                           break;
                }
                break;
           case 2:
                System.out.println("Enter temperature to convert(in °F)");
                double F=Double.parseDouble(br.readLine());
                System.out.println("Enter choice of scale to which current temperature should be converted");
                System.out.println("1)Celsius");
                System.out.println("2)Kelvin");
                int no2=Integer.parseInt(br.readLine());
                switch(no2)
                {
                    case 1:
                           ans=((5*(F-32))/9);
                           System.out.println(ans+"°C");
                           break;
                    case 2:
                           ans=((5/9)*(F-32))+273;
                           System.out.println(ans+"K");
                           break;
                }
                break;
           case 3:
                System.out.println("Enter temperature to convert(in K)");
                double K=Double.parseDouble(br.readLine());
                System.out.println("Enter choice of scale to which current temperature should be converted");
                System.out.println("1)Celsius");
                System.out.println("2)Fahrenheit");
                int no3=Integer.parseInt(br.readLine());
                switch(no3)
                {
                    case 1:
                           ans=K-273;
                           System.out.println(ans+"°C");
                           break;
                    case 2:
                           ans=((9/5)*(K-273))+32;
                           System.out.println(ans+"°F");
                           break;
                }
                break;
       }

   }
}




1 个答案:

答案 0 :(得分:5)

当您在整数算术中执行该计算时,

(5/9)将评估为零。

同样,(9/5)将评估为1。

重写为5.0 / 9等,因此计算以浮点形式进行。