Java数据类型练习排障:BMI计算变量未执行计算及结果显示问题求助
解决Java BMI计算程序无法输出结果的问题
嘿,我来帮你排查下问题!从你贴的未完成代码来看,核心问题是代码缺少了获取用户输入、执行BMI计算以及输出结果的关键环节,这才导致bodyMassIndex变量没机会执行计算,自然也看不到输出。咱们一步步来修复:
1. 先理清楚你代码的缺失点
你目前只完成了变量声明、Scanner初始化和输入提示的开头部分,但:
- 没有调用Scanner的方法读取用户输入的身高和体重,导致这两个变量都是默认初始值(0)
- 没有编写BMI的计算公式,
bodyMassIndex一直是默认的0.0 - 没有输出结果的语句,就算计算了也看不到
- 大概率还漏了
Scanner类的导入语句,编译会报错
2. 补全并优化后的完整代码
我把代码补全,同时做了一些实用优化,比如用double存储身高体重避免精度丢失,添加了结果格式化:
// 必须导入Scanner类,否则编译报错 import java.util.Scanner; public class Exercise3 { public static void main (String [] args) { // 变量声明:用double存储身高体重,避免整数运算的精度问题 double heightCm; double weightKg; double bodyMassIndex; Scanner input = new Scanner (System.in); // 获取用户输入的体重 System.out.println("请输入您的体重(单位:千克):"); weightKg = input.nextDouble(); // 获取用户输入的身高(这里用厘米为例) System.out.println("请输入您的身高(单位:厘米):"); heightCm = input.nextDouble(); // 执行BMI计算:先把厘米转成米,再套用公式 BMI = 体重(kg) / (身高(m)²) double heightM = heightCm / 100; bodyMassIndex = weightKg / (heightM * heightM); // 格式化输出结果,保留两位小数更直观 System.out.printf("您的BMI指数为:%.2f%n", bodyMassIndex); // 可选:添加BMI分类判断,让程序更实用 String weightStatus; if (bodyMassIndex < 18.5) { weightStatus = "偏瘦"; } else if (bodyMassIndex < 24) { weightStatus = "正常"; } else if (bodyMassIndex < 28) { weightStatus = "超重"; } else { weightStatus = "肥胖"; } System.out.println("对应的体重状态:" + weightStatus); // 关闭Scanner,养成良好编码习惯 input.close(); } }
3. 关键细节说明
- 输入获取:必须用
input.nextDouble()(或对应类型的方法)读取用户输入,否则变量会一直是默认值,计算出来的结果毫无意义 - 计算逻辑:一定要把身高转换成米(如果输入的是厘米),否则公式会完全错误
- 输出语句:用
System.out.printf()可以格式化数字,比println()输出的结果更美观易读 - 类型问题:如果坚持用
int存储身高体重,计算时要做强制类型转换,避免整数除法导致的精度丢失,比如:bodyMassIndex = (double)weightKg / Math.pow((double)heightCm / 100, 2);
内容的提问来源于stack exchange,提问作者Rye Guy
相关产品推荐
相关产品推荐

