You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:15:34