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

Java BMI计算结果分类输出及switch循环运行至用户退出问题求解

Java编程作业问题修复方案

1. BMI分类输出实现

你需要在BMI计算完成后新增多分支判断逻辑匹配体重分类,同时注意原case 3代码块末尾缺失break关键字,会导致执行完BMI逻辑后直接落到退出分支,需要补上。
在bmi计算完成后补充如下代码即可:

String bmiCategory;
if (bmi < 18.5) {
    bmiCategory = "体重过轻";
} else if (bmi < 25) {
    bmiCategory = "正常";
} else if (bmi < 30) {
    bmiCategory = "超重";
} else {
    bmiCategory = "肥胖";
}
System.out.println(bmi + " ,对应的体重分类为:" + bmiCategory);
break; // 必须补充,避免穿透到case4

2. 循环执行switch直到用户退出实现

使用do-while循环包裹「获取用户选择 + 执行switch逻辑」的代码即可,只要用户没有选择退出选项(值为4)就持续循环。
修改后的完整main方法代码如下:

public static void main(String[] args) {
    Scanner userdata = new Scanner(System.in);
    int userChoice;
    // 循环体:只要用户没选4就重复执行
    do {
        userChoice = choice();
        switch (userChoice) {
            // 磅转千克
            case 1: 
                System.out.println("请输入要转换为千克的磅数:");
                double lb = userdata.nextDouble();
                double kg = lb * 0.45;
                System.out.println("你输入了 " + lb + " 磅,换算为千克是:" + kg);
                break;
            // 英寸转厘米
            case 2:
                System.out.println("请输入要转换为厘米的英寸数:");
                double in = userdata.nextDouble();
                double cm = in * 2.54;
                System.out.println("你输入了 " + in + " 英寸,换算为厘米是:" + cm);
                break;
            // 计算BMI
            case 3:
                System.out.println("计算BMI请先输入体重(单位:kg):");
                double kilo = userdata.nextDouble();
                System.out.println("你输入的体重为 " + kilo + "kg,请输入身高(单位:cm):");
                double height = userdata.nextDouble();
                double bmi = kilo/height/height * 10000;
                // BMI分类判断
                String bmiCategory;
                if (bmi < 18.5) {
                    bmiCategory = "体重过轻";
                } else if (bmi < 25) {
                    bmiCategory = "正常";
                } else if (bmi < 30) {
                    bmiCategory = "超重";
                } else {
                    bmiCategory = "肥胖";
                }
                System.out.println("你的BMI数值为:" + bmi + ",体重分类为:" + bmiCategory);
                break;
            // 退出程序
            case 4: 
                System.out.println("正在退出程序。");
                break;
            // 处理非法输入
            default:
                System.out.println("输入的选项无效,请重新输入1-4之间的数值!");
        }
    } while (userChoice != 4);
    userdata.close();
}

额外注意事项

  • 原choice方法中每次调用都新建Scanner属于冗余操作,可优化为将main中创建的userdata作为参数传入choice方法复用
  • 新增的default分支可处理用户输入非1-4数值的情况,提升程序容错性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 05:24:04