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

Java重载方法实现米转英尺转换时英尺值始终为0的问题求助

问题分析与解决方案

嗨,我来帮你找出问题所在啦!你遇到的英尺计算结果为0的问题,根源在于米数的传递出错了——你在testConversion方法里初始化了double meter = 0;,然后直接把这个初始值0传给了FeetConversion方法,完全没用到MeterConversion计算出来的实际米数!

具体问题点

在你的代码里:

public void testConversion(int height){
    double meter = 0; // 这里初始化为0
    System.out.println("\n");
    System.out.printf("the height of a user is: %d cm\n\n", height(height));
    MeterConversion(height); // 这里计算了米数,但没把结果存下来
    FeetConversion(meter); // 传的是初始的0,不是计算后的米数
}

MeterConversion方法里的meter是局部变量,计算完后没有返回给外部的testConversion方法,所以外部的meter始终是0,导致英尺计算0 * 3.281 = 0。

修正后的代码

我们只需要让MeterConversion返回计算好的米数,然后把这个值传给FeetConversion就可以了:

import java.util.Scanner;
public class prog10 {
    public static void main(String[] args) {
        int height;
        Scanner in = new Scanner(System.in);
        System.out.printf("\n");
        System.out.printf("What is your height?: ");
        height = in.nextInt();
        Conversion convert = new Conversion();
        convert.testConversion(height);
    }
}
class Conversion{
    public void testConversion(int height){
        System.out.println("\n");
        System.out.printf("the height of a user is: %d cm\n\n", height(height));
        // 接收MeterConversion返回的米数,再传给FeetConversion
        double calculatedMeter = MeterConversion(height);
        FeetConversion(calculatedMeter);
    }
    public int height(int height){
        System.out.printf("called Height with int argument: %d\n", height);
        return height;
    }
    public double meter(double meter){
        System.out.printf("called Meter with double argument: %.1f\n", meter);
        return meter;
    }
    public double ft(double ft){
        System.out.println("\n");
        System.out.printf("called Feet with double argument: %.1f\n", ft);
        return ft;
    }
    // 修改返回类型为double,返回计算后的米数
    public double MeterConversion(double height){
        double meter = height * 0.01;
        System.out.printf("The height of a user in meter is: %.1f m\n", meter(meter));
        return meter;
    }
    public void FeetConversion(double meter){
        double ft = meter * 3.281;
        System.out.printf("The height of a user in feet is: %.1f ft\n",ft(ft));
    }
}

改动说明

  1. 把MeterConversion的返回类型从void改成double,并在方法最后return meter;,这样就能把计算好的米数返回给调用者
  2. 在testConversion里,用calculatedMeter变量接收MeterConversion(height)的返回值,再把这个值传给FeetConversion
  3. 去掉了原来没用的double meter = 0;声明

运行验证

现在输入170的话,输出会变成:

What is your height?: 170
called Height with int argument: 170
the height of a user is: 170 cm

called Meter with double argument: 1.7
The height of a user in meter is: 1.7 m

called Feet with double argument: 5.6
The height of a user in feet is: 5.6 ft

这样英尺的计算结果就正确啦!

内容的提问来源于stack exchange,提问作者Jadee Buenaflor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:57:36