VB BMI计算器逻辑错误求助:BMI值判定结果完全颠倒
排查VB BMI计算器的逻辑异常问题
嘿,这明显是判断逻辑完全颠倒+阈值设置错误导致的问题,咱们来一步步揪出原因:
首先,先确认BMI的计算是否正确
BMI的公式是 体重(kg) ÷ (身高(m))²,很多人容易在这里踩坑:如果你的身高输入是厘米(比如175),有没有转换成米(1.75)?要是直接用厘米计算,得到的BMI会小到离谱(比如体重70kg,身高175厘米,直接算的话是70/(175²)=0.00228),这时候肯定小于10,会被误判成肥胖。
先检查你的计算代码,确保单位转换正确,比如:
' 示例:把厘米转成米 Dim heightInMeter As Double = CDbl(txtHeight.Text) / 100 Dim bmiValue As Double = CDbl(txtWeight.Text) / (heightInMeter * heightInMeter)
然后,核心问题:分类判断的逻辑写反了
你描述的现象是「BMI<10判肥胖,>10判过轻」,说明你的判断条件不仅阈值错得离谱(正常BMI的过轻阈值是18.5左右,肥胖是28+),而且符号完全搞反了。
举个反例,你可能写了类似这样的错误代码:
If bmiValue < 10 Then lblResult.Text = "肥胖" ElseIf bmiValue > 10 Then lblResult.Text = "体重过轻" End If
修正后的正确判断逻辑(以国内通用标准为例)
把阈值调整到合理范围,同时把判断方向改对:
Select Case bmiValue Case Is < 18.5 lblResult.Text = "体重过轻" Case 18.5 To 23.9 lblResult.Text = "体重正常" Case 24 To 27.9 lblResult.Text = "超重" Case Is >= 28 lblResult.Text = "肥胖" End Select
或者用If-Else结构也可以,核心是条件的符号和阈值要匹配实际的BMI分类标准。
最后再验证一下
先手动算一个正常的BMI值(比如体重60kg,身高1.7m,BMI≈20.76),代入代码看是否输出「体重正常」;再试一个肥胖的数值(体重85kg,身高1.7m,BMI≈29.4),看是否输出「肥胖」,这样就能确认逻辑没问题了。
内容的提问来源于stack exchange,提问作者KB1934
相关产品推荐
相关产品推荐

