【问题标题】:Java program not outputting correct integer value [duplicate]Java程序未输出正确的整数值[重复]
【发布时间】:2017-01-25 06:35:50
【问题描述】:

我正在尝试通过我的 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 乘以 1.8 然后加上 32 时输出 tempC + 32。我这里哪里出错了?

【问题讨论】:

  • 但这是离散的,因为您使用了( )

标签: java integer-division


【解决方案1】:

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

我还要补充一点,你的班级应该叫TemperatureConverter 而不是CelsiusToFahrenheit。为什么?因为您现在的名字使您无法获得改进。你不应该在这个类中实现farenheitToCelsius,你将来可能会这样做。

【讨论】:

  • 或者去掉()就行了。操作double * int / int 就可以了。 PS:我昨天使用 JLS 参考在副本上添加了一个答案来解释它是如何工作的。我认为仍然需要一些提示来改善这一点。
猜你喜欢
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多