s520z 发表于 2022-9-5 14:44

Java计算身体质量指数BMI

本帖最后由 s520z 于 2023-3-14 20:48 编辑

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 + "低");
            }
      }
    }
}



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

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

第36行是进不去的哟。。。

wang2019 发表于 2022-9-5 17:15

第 36行应该是小于40吧 meter < 40 && 30 <= meter

cga10000 发表于 2022-9-5 16:29

加油!!!!!!!!!!!!

ZMZN 发表于 2022-10-6 23:00

又多了个练手的小案例{:1_921:}
页: [1]
查看完整版本: Java计算身体质量指数BMI