Java程序未输出正确的整数值[重复]
Posted
技术标签:
【中文标题】Java程序未输出正确的整数值[重复]【英文标题】:Java program not outputting correct integer value [duplicate] 【发布时间】: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。我这里哪里出错了?
【问题讨论】:
但这是离散的,因为您使用了(
)
【参考方案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 参考在副本上添加了一个答案来解释它是如何工作的。我认为仍然需要一些提示来改善这一点。以上是关于Java程序未输出正确的整数值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束