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

标签 java integer-division

我正在尝试通过我的CelsiusToFahrenheit.java 文件中的main() 类运行程序。我创建了一个名为“CelsiusToFahrenheit”的公共(public)类,当该类接收“double”类型的参数时,它应该获取该输入并通过将摄氏温度转换为华氏温度的算法运行它。当我编译代码并输入一个整数时,输出不反射(reflect)分配给 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 乘以 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 而不是 CelsiusToFahrenheit。为什么?因为你现在的名字让你无法获得改进。您不应该在此类中实现 farenheitToCelsius,而您将来可能会想要这样做。

关于Java程序未输出正确的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41844953/

相关文章:

python - 如何在python中设置多个循环 'for'作为函数的参数来找到将一个句点切成n份的所有可能性?

带有总和的 Map of Map 的 Java8 Map

java - 如何限制akka调度器运行任务的数量?

assembly - 为什么在使用DIV指令之前EDX必须为0?

C:将华氏度转换为摄氏度

assembly - 使用单个 aarch64 指令获取余数?

java - 如何循环 HashMap 中的下一个元素

java - 插入数据的唯一约束错误

java - Android:指定数组大小?

java - 第一个数小于第二个数时的模数除法