Java程序没有输出正确的整数值

时间:2017-01-25 06:35:50

标签: java integer-division

我试图通过我的CelsiusToFahrenheit.java文件中的main()类运行程序。我创建了一个名为CelsiusToFahrenheit的公共类,当类接收到类型为“double”的参数时,它应该接受该输入并通过将摄氏数转换为华氏度的算法运行它。当我编译代码并输入一个整数时,输出不会反映分配给tempOutput的算法。这是代码:

import java.util.Scanner;

public class CelsiusToFahrenheit {
   public static double convertCelsiusToFahrenheit(double tempInput) {
      double tempOutput = 0.0;
      tempOutput = (tempInput * (9 / 5)) + 32;
      return tempOutput;
}


   public static void main (String [] args) {
      Scanner scnr = new Scanner(System.in);
      double tempF = 0.0;
      double tempC = 0.0;

      System.out.println("Enter temperature in Celsius: ");
      tempC = scnr.nextDouble();

      tempF = convertCelsiusToFahrenheit(tempC);

      System.out.print("Fahrenheit: ");
      System.out.println(tempF);

      scnr.close();

      return;
   }
}

我为tempC变量输入的任何给定数字输出tempC + 32时,它应该将tempC乘以1.8然后再加上32。我在哪里出错?

1 个答案:

答案 0 :(得分:3)

tempOutput = (tempInput * (9 / 5)) + 32; - 9/5=1因为它是整数除法。您可以使用9/5.0(tempInput * 9 / 5) + 32;来使用浮点除法。第二种方式可行,因为java是从左到右,double*int将是double,而double/int将使用浮动除法。

我还会添加一条评论,您的课程可能会被称为TemperatureConverter,而不是CelsiusToFahrenheit。为什么?因为您当前的名字会让您接受改进。您不应该在此类中实现farenheitToCelsius,以后可能要执行此操作。