Java程序未输出正确的整数值

Java程序未输出正确的整数值,java,integer-division,Java,Integer Division,我正试图通过CelsiusToFahrenheit.java文件中的main()类运行一个程序。我创建了一个名为CelsiusToFahrenheit的公共类,当该类接收到类型为“double”的参数时,它应该接受该输入,并通过将摄氏数转换为华氏度的算法来运行它。当我编译代码并输入一个整数时,输出并不反映分配给tempOutput的算法。代码如下: import java.util.Scanner; public class CelsiusToFahrenheit { public st

我正试图通过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变量的任何给定数字I输入与tempC相乘1.8,然后加上32时,输出tempC+32。我哪里出错了?

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


我还要补充一点,您的类可能应该被称为
TemperatureConverter
,而不是
celsiustofahernheit
。为什么?因为你现在的名字使你无法接受这些改进。你不应该在这个类中实现你将来可能想做的
Farenheitocelius

但是这是离散的,因为你使用
或者删除
就可以了。操作
double*int/int
将正常。PS:我昨天用JLS参考添加了一个关于副本的答案,以解释这是如何工作的。我认为还需要一些提示来改进这一点。