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

如何让BMI图表循环在用户指定的最大体重值处停止?

解决BMI图表循环终止问题

问题根源

你当前的循环条件i < max逻辑错误——这里的max是目标体重上限,但循环变量i是从0开始累加的增量值,两者不是同一个概念。比如你示例中输入的最大体重是155,初始体重是120,那i需要累加到155-120=35就停止,而不是累加到接近155,这才会导致循环一直跑到120+150=270左右才停止。

修正方案

下面两种方案都能让循环在用户指定的最大体重处准确停止:

方案1:直接判断最终体重

修改for循环的条件,确保计算出的newWeight不超过用户输入的max:

for (int i = 0; weight + i <= max; i += 5) {
    double newWeight = weight + i;
    // 后续BMI计算和输出逻辑不变
    double newBmi = ((newWeight * 703) / (height * height));
    String condition = null;

    if (newBmi < 18.5) {
        condition = "Underweight";
    } else if (newBmi >= 18.5 && newBmi < 25) {
        condition = "Normal";
    } else if (newBmi >= 25 && newBmi < 30) {
        condition = "Overweight";
    } else if (newBmi >= 30) {
        condition = "Obese";
    }
    System.out.println(newWeight + "  " + newBmi + " " + condition);
}

方案2:先计算增量上限

提前算出从初始体重到最大体重的总增量,以此作为循环变量的终止边界:

int totalIncrement = max - weight;
for (int i = 0; i <= totalIncrement; i += 5) {
    double newWeight = weight + i;
    // 后续BMI计算和输出逻辑不变
    double newBmi = ((newWeight * 703) / (height * height));
    String condition = null;

    if (newBmi < 18.5) {
        condition = "Underweight";
    } else if (newBmi >= 18.5 && newBmi < 25) {
        condition = "Normal";
    } else if (newBmi >= 25 && newBmi < 30) {
        condition = "Overweight";
    } else if (newBmi >= 30) {
        condition = "Obese";
    }
    System.out.println(newWeight + "  " + newBmi + " " + condition);
}

效果验证

用你示例中的初始体重120、最大体重155测试,循环会在i=35时停止,对应的newWeight=155,正好是你期望的终止点,不会继续往后运行。

内容的提问来源于stack exchange,提问作者yani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:40:53