华氏转摄氏温度方法调用异常,返回值不符问题求助
修复华氏转摄氏温度的代码问题
嘿,我帮你揪出代码里的几个关键bug,这就是为啥你得到的结果始终不对:
- 返回值完全错误:你在
convert方法里最后返回的是输入的fah(华氏温度),而不是你计算的cel变量!这直接导致不管输入啥,返回的都是你输入的数值(你说返回100.0,应该是你刚好输入了100华氏度)。 - 公式逻辑颠倒:正确的转换公式是
(华氏温度 - 32) * 5 / 9,但你写成了(5/9)*fah -32,运算顺序完全搞反了。 - 整数除法陷阱:Java里
5/9是整数除以整数,结果会被取整为0,而不是你期望的0.555...。必须把其中一个数改成浮点数,比如5.0/9或者(double)5/9,这样才会进行浮点运算。
下面是修复后的完整代码:
修复后的Temperature.java
public class Temperature { public static double convert(double fah) { // 修正公式顺序,并用浮点除法保证精度 double cel = (fah - 32) * 5.0 / 9; // 返回计算好的摄氏温度,而非输入的华氏温度 return cel; } }
补全后的Question3.java
import java.util.Scanner; public class Question3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入华氏温度:"); double fahrenheit = scanner.nextDouble(); // 调用转换方法获取结果 double celsius = Temperature.convert(fahrenheit); System.out.printf("对应的摄氏温度是:%.2f\n", celsius); scanner.close(); } }
你可以测试一下:输入32华氏度会返回0.0,输入212华氏度会返回100.0,完全符合预期。
内容的提问来源于stack exchange,提问作者Kiara
相关产品推荐
相关产品推荐

