BMI & BMR计算器输入验证失效问题排查求助
输入验证失效问题排查与修复
问题背景
我正在开发一个接收用户身高、体重、年龄并返回BMI和BMR的程序,核心计算逻辑已完成,但添加输入验证后发现无论输入什么数值,都不会触发错误提示,直接输出计算结果。
验证约束条件为:
- 50 [cm] ≤ 身高 ≤ 220 [cm]
- 10 [kg] ≤ 体重 ≤ 250 [kg]
- 18 [years] ≤ 年龄 ≤ 70 [years]
我写的验证代码如下:
if (getHight >= 220 && getHight <= 50) { Console.WriteLine("Unfortunately, your input is incorrect, please try again"); } else if (getAge >= 70 && getAge <= 18) { Console.WriteLine("Unfortunately, your input is incorrect, please try again"); } else if (getWeight >= 250 && getWeight <= 10) { Console.WriteLine("Unfortunately, your input is incorrect, please try again"); }
错误原因
你的验证条件逻辑完全错误。以身高判断为例,getHight >=220 && getHight <=50 要求一个数值同时满足大于等于220且小于等于50,这在数学上不可能成立,所有if条件永远不会触发,因此不会输出错误提示。
正确的逻辑应该是判断数值超出合法范围:当身高小于50 或者 大于220时,判定为输入错误;年龄和体重的判断同理。
修复后的代码
// 标记输入是否合法 bool isInputValid = true; // 验证身高 if (getHight < 50 || getHight > 220) { Console.WriteLine("身高输入错误,请输入50-220cm之间的数值"); isInputValid = false; } // 验证年龄 if (getAge < 18 || getAge > 70) { Console.WriteLine("年龄输入错误,请输入18-70岁之间的数值"); isInputValid = false; } // 验证体重 if (getWeight < 10 || getWeight > 250) { Console.WriteLine("体重输入错误,请输入10-250kg之间的数值"); isInputValid = false; } // 仅当输入合法时执行计算逻辑 if (isInputValid) { // 此处替换为你的BMI和BMR计算代码 // 示例:double bmi = getWeight / Math.Pow(getHight / 100.0, 2); Console.WriteLine("BMI和BMR计算结果:..."); }
内容的提问来源于stack exchange,提问作者beyonder
相关产品推荐
相关产品推荐

