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
相关产品推荐
相关产品推荐

