You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Java初学者求助:BMI计算器方法间字符串值传递异常问题

解决Java BMI计算器的字符串返回值问题

嗨安迪!我来帮你搞定这个问题😊

首先,你的核心问题出在Java的参数传递机制方法返回值的处理上:

问题分析

  • Java是值传递:String是不可变类,当你把ergebnis作为参数传给bmirechner方法时,方法拿到的只是这个字符串的一个副本。你在方法里对这个副本做的任何修改,都不会影响原来的ergebnis变量,所以最后打印出来还是空字符串。
  • 方法未正确返回结果:你的bmirechner方法声明了返回String,但代码里没有写return语句返回计算后的结果,这不仅会导致编译错误,也无法把方法内的结果传递回main方法。

修正后的完整代码

我帮你补全了代码逻辑,保留了德语提示,同时修复了返回值的问题:

import java.util.Scanner;

public class BmiRechner { // 类名建议首字母大写,符合Java命名规范
    public static void main(String[] args) {
        // 直接接收方法返回的结果字符串
        String ergebnis = bmirechner();
        System.out.println(ergebnis);
    }

    public static String bmirechner() {
        int kg = 0;
        float laenge = 0;
        double bmi = 0;
        Scanner sc = new Scanner(System.in);

        // 获取用户输入的体重
        System.out.println("Bitte geben Sie ihr Körpergewicht ein.");
        kg = sc.nextInt();

        // 获取用户输入的身高(以米为单位,比如1.75)
        System.out.println("Bitte geben Sie ihre Körpergröße in Metern ein.");
        laenge = sc.nextFloat();

        // 计算BMI值:体重(kg) / (身高(m) * 身高(m))
        bmi = kg / (laenge * laenge);

        // 根据BMI值生成结果字符串(德语分类)
        String ergebnisText;
        if (bmi < 18.5) {
            ergebnisText = String.format("Ihr BMI beträgt %.2f - Sie sind untergewichtig.", bmi);
        } else if (bmi < 25) {
            ergebnisText = String.format("Ihr BMI beträgt %.2f - Sie haben ein normales Gewicht.", bmi);
        } else if (bmi < 30) {
            ergebnisText = String.format("Ihr BMI beträgt %.2f - Sie sind übergewichtig.", bmi);
        } else {
            ergebnisText = String.format("Ihr BMI beträgt %.2f - Sie haben Adipositas.", bmi);
        }

        sc.close(); // 关闭Scanner资源
        return ergebnisText; // 返回结果字符串
    }
}

关键修改点说明

  • 移除不必要的方法参数:输入和结果生成都在bmirechner方法内完成,不需要传递外部字符串参数
  • 接收方法返回值:在main方法中直接用ergebnis变量接收bmirechner()的返回结果
  • 补全BMI计算逻辑:添加了身高输入、BMI计算,以及根据BMI值生成对应德语提示的逻辑
  • 规范命名:类名改成BmiRechner符合Java大驼峰规范,变量名laenge和德语提示统一
  • 关闭资源:使用完Scanner后关闭,避免资源泄漏

这样修改后,你就能正确获取到BMI计算的结果字符串啦!

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

火山引擎 最新活动