0
点赞
收藏
分享

微信扫一扫

实战案例:BMI 指数计算

案例描述

BMI 指数(Body Mass Index,身体质量指数)是用体重(以公斤为单位)除以身高(以米为单位)的平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的标准。BMI 指数比对胖瘦程度见表 3-2。

表 3-2 BMI 指数参考表

BMI 值 分档

低于 18.5 过瘦

18.5 ~ 24 (不含) 正常

24 ~ 28 (不含) 过胖

28 ~ 32 (不含) 肥胖

大于等于 32 非常肥胖

案例分析

不要着急动手编程,我们应该根据题目要求,仔细思考程序的执行步骤。

首先让用户输入自己的身高和体重,我们分别将它们存入变量 height 和 weight。然后根据题目给出的公

式计算出 bmi 值,用 JavaScript 表达式表示:

var bmi = weight / Math.pow(height , 2);

接下来就要写多分支的 if 结构体了。根据表 3-2,我们可以写出 5 个分支。

请一定注意“否则如果”,不要书写画蛇添足的语句。每条 else if 分支都暗含了“之前的条件不满足”

的意义。比如正常体重的标准是 bmi 介于 18.5 到 24,可能直觉就会写出 bmi > 18.5 && bmi < 24 这样的语

句,但这是画蛇添足的。因为 bmi 低于 18.5 的人已经是“过瘦”了,所以在判断用户是不是“正常”体型的时

候就不需要验证 bmi > 18.5 了。

案例代码

案例代码如下:

//用户输入身高

var height = prompt("请输入身高,以米为单位");

//用户输入体重

var weight = prompt("请输入体重,以公斤为单位");

//计算 BMI

var bmi = weight / (height * height);

//根据 BMI 弹出结果

if(bmi < 18.5){

alert("过轻!请加强营养!");

}else if(bmi < 24){

alert("正常!请保持!");

}else if(bmi < 28){

alert("过重!要减肥啦!");

}else if(bmi < 32){

alert("肥胖!赶紧多运动减肥!");

}else{

alert("非常肥胖!严重影响健康,请减肥!");

}

程序的每一个 if 分支,都做到了最精简,没有书写没用的语句。

if 语句的嵌套

if 语句非常灵活,可以嵌套使用,即分支中还可以再有分支。

来看一个题目:用户输入年龄和性别,判断用户是否能合法结婚。相关法律法规规定,男性结婚年龄不得早

于 22 周岁,女性不得早于 20 周岁。

用户的年龄和性别综合决定了结果:当用户是男性的时候,年龄的分界点是 22;当用户是女性的时候,年

龄分界点是 20。这就是说,性别是一个“大条件”,在某一个大条件下,再根据年龄这个“小条件”来产生结

果。

根据这个算法思路,我们书写程序如下:

//用户先输入自己的性别,比如男、女。然后输入自己的年龄。

var sex = prompt("请输入性别");

var age = Number(prompt("请输入年龄"));

//先判断性别

if(sex == "男"){

//如果是男性的情况下,继续判断年龄

if(age >= 22){

alert("可以结婚");

}else{

alert("不能结婚");

}

}else if(sex == "女"){

//如果是女性的情况下,继续判断年龄

if(age >= 20){

alert("可以结婚");

}else{

alert("不能结婚");

}

}else{

//性别输入输入的不是男也不是女

alert("请输入正确的性别");

}

程序出现了外层 if 和内层 if 两层结构。外层 if 用来判断用户的性别;内层 if 用来判断用户的年龄。

代码中的 if 语句嵌套了两级,在更为复杂的项目中可能会有更多级别的嵌套。使用多层 if 语句的时候,

我们必须要注重代码缩进,同一个层次的 if 语句,必须缩进到同一个级别上。


举报

相关推荐

0 条评论