You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

华氏转摄氏温度方法调用异常,返回值不符问题求助

修复华氏转摄氏温度的代码问题

嘿,我帮你揪出代码里的几个关键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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:20:13