吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2073|回复: 6
收起左侧

[Java 原创] Java计算身体质量指数BMI

[复制链接]
s520z 发表于 2022-9-5 14:44
本帖最后由 s520z 于 2023-3-14 20:48 编辑

[Java] 纯文本查看 复制代码
import java.util.*;

class BMI {
    public static void main(String[] args) {
/*
                    身体质量指数BMI
            计算公式:BMI=体重(千克)除以身高(米)的平方。
*BMI分类        *中国参考标准      *相关疾病发病的危险性
体重过低         BMI<18.5         低(但其它疾病危险性增加)
正常范围         18.5≤BMI<24      平均水平
超重             BMI≥24           增加
肥胖前期         24<BMI<28        增加
Ⅰ度肥胖         28≤BMI<30        中度增加
Ⅱ度肥胖         30≤BMl<40        严重增加
Ⅲ度肥胖         BMI≥40.0         非常严重增加

*/
        //double height = 175;  //单位: 厘米
        //double weight = 100;  //单位: 千克(公斤)   
        try (Scanner input = new Scanner(System.in)) {
            System.out.println("请您输入你的身高(厘米)");
            int height = input.nextInt();
            System.out.println("请您输入你的体重(千克&公斤)");
            int weight = input.nextInt();

            double lower = (double) height / 100;
            double meter = weight / (lower * lower);
            System.out.println("*您的BMI指数:" + meter);

            String classification = "*BMI分类:";
            String serious = "*危险程度:";

            if (meter >= 40) {
                System.out.println(classification + "Ⅲ度肥胖");
                System.out.println(serious + "非常严重增加");
            } else if (meter < 40 && 30 <= meter) {
                System.out.println(classification + "Ⅱ度肥胖");
                System.out.println(serious + "严重增加");
            } else if (meter >= 28 && 30 > meter) {
                System.out.println(classification + "Ⅰ度肥胖");
                System.out.println(serious + "中度增加");
            } else if (meter >= 24 && 28 < meter) {
                System.out.println(classification + "肥胖前期");
                System.out.println(serious + "增加");
            } else if (meter >= 24) {
                System.out.println(classification + "超重");
                System.out.println(serious + "增加");
            } else if (meter < 24 && 18.5 <= meter) {
                System.out.println(classification + "正常范围");
                System.out.println(serious + "平均水平");
            } else if (meter < 18.5) {
                System.out.println(classification + "体重过低");
                System.out.println(serious + "低");
            }
        }
    }
}



BMI.png
小白第一次学Java,如有不对的地方请指出

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xwmowzvi + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wang2019 发表于 2022-9-5 17:22
本帖最后由 wang2019 于 2022-9-5 17:24 编辑

比着写了个Go的,一起交流
好像你这个BMI的计算方式有问题 (超重和 肥胖前期)
package main

import "fmt"

func main() {
    /*
                           身体质量指数BMI
                   计算公式:BMI=体重(千克)除以身高(米)的平方。
       *BMI分类        *中国参考标准      *相关疾病发病的危险性
       体重过低         BMI<18.5         低(但其它疾病危险性增加)
       正常范围         18.5≤BMI<24      平均水平
       超重             BMI≥24           增加
       肥胖前期         24<BMI<28        增加
       Ⅰ度肥胖         28≤BMI<30        中度增加
       Ⅱ度肥胖         30≤BMl<40        严重增加
       Ⅲ度肥胖         BMI≥40.0         非常严重增加

    */

    var (
        height         int // 定义身高变量
        weight         int // 定义体重变量
        lower          float64
        meter          float64 // 定义BMI变量
        classIfication = "BMI分类: "
        serious        = "危险程度: "
    )
    fmt.Println("请输入您的身高(厘米)和体重(千克&公斤):")
    fmt.Scan(&height, &weight) // 获取用户输入
    fmt.Printf("您的身高为: %v 厘米, 体重为: %v 千克\n", height, weight)
    lower = float64(height) / 100             // 身高厘米转换成米
    meter = float64(weight) / (lower * lower) // 计算BMI指数
    fmt.Printf("您的BMI指数为: %v\n", meter)

    // 进行BMI指数判断
    switch {
    case meter >= 40:
        {
            fmt.Println(classIfication, "Ⅲ度肥胖")
            fmt.Println(serious + "非常严重增加")
        }
    case meter >= 30 && meter < 40:
        {
            fmt.Println(classIfication, "Ⅱ度肥胖")
            fmt.Println(serious + "严重增加")
        }
    case meter >= 28 && meter < 30:
        {
            fmt.Println(classIfication, "Ⅰ度肥胖")
            fmt.Println(serious, "中度增加")
        }
    case meter > 24 && meter < 28:
        {
            fmt.Println(classIfication, "肥胖前期")
            fmt.Println(serious, "增加")
        }
    case meter >= 18.5 && meter < 24:
        {
            fmt.Println(classIfication, "正常范围")
            fmt.Println(serious, "平均水平")
        }
    default:
        fmt.Println(classIfication, "体重过低")
        fmt.Println(serious, "低")
    }
}
kingofking 发表于 2022-9-5 17:47
我减肥的时候 用excel写了一个自动计算的表。。。哈哈哈
lsy_loren 发表于 2022-9-5 18:03
wang2019 发表于 2022-9-5 17:15
第 36行应该是小于40吧 meter < 40 && 30 <= meter

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
s520z + 1 + 1 谢谢@Thanks!

查看全部评分

cga10000 发表于 2022-9-5 16:29
加油!!!!!!!!!!!!
ZMZN 发表于 2022-10-6 23:00
又多了个练手的小案例
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表