27.基础语法-健康饮食计划案例01

27 健康饮食计划案例01

27.1 需求

  1.键盘录入用户的身高、年龄、体重、性别、活动级别等基本信息
  2.根据基本信息计算BMI,判断用户体型,设立运动目标
  3.根据基本信息计算BMR(每日基础代谢热量)和TDEE(每日总热量消耗)
  4.根据运动目标计算每日建议摄入热量
  5.根据每日摄入热量计算每日营养素分配

27.2 代码实现

package com.itheima.healthy;

import java.text.DecimalFormat;
import java.util.Scanner;

public class HeimaHealthy {
    public static void main(String[] args) {
        // 1.录入用户信息
        // 1.1 创建 Scanner 对象
        Scanner scanner = new Scanner(System.in);

        // 1.2 录入身高
        System.out.print("请输入身高(单位:厘米): ");
        short height = scanner.nextShort();
        // 1.3 录入体重
        System.out.print("请输入体重(单位:千克): ");
        double weight = scanner.nextDouble();
        // 1.4 录入年龄
        System.out.print("请输入年龄: ");
        byte age = scanner.nextByte();
        // 1.5 录入性别
        // System.out.print("请输入性别(男/女): ");
        // String gender = scanner.next();  // 没有nextchar() 方法, 只能用next(), 字符串形式, 可以只输入一个字符
        System.out.print("请输入性别(0:男/1:女): ");  // 升级, 用户输入汉字不如数字方便
        byte gender = scanner.nextByte();  // 没有nextchar() 方法, 只能用next(), 字符串形式, 可以只输入一个字符
        // 1.6 录入活动级别
        // System.out.print("请输入活动级别(久坐/轻度/中度/高度): ");
        // String activityLevel = scanner.next();
        System.out.print("请输入活动级别(0:久坐/1:轻度/2:中度/3:高度): ");
        byte activityLevel = scanner.nextByte();

        // 2.计算BMI, 并且判断体型, 设定运动目标
        // 2.1 换算 米 计算BMI
        double heightInMeters = height / 100.0 ; // 身高转换成米, 100.0 不会因为浮点数精度问题, 丢失精度
        double bmi = weight / (heightInMeters * heightInMeters);
        // 2.2 判断体型
        String bodyType="";
        if (bmi < 18.5) {
            bodyType = "偏瘦";
        } else if (bmi >= 18.5 && bmi < 24) {
            bodyType = "正常";
        } else if (bmi >= 24 && bmi < 28) {
            bodyType = "过重";
        } else {
            bodyType = "肥胖";
        }
        // 2.3 设定运动目标
        String goal="";
        if (bodyType.equals("偏瘦")) {
            goal = "增肌";
        } else if (bodyType.equals("过重") || bodyType.equals("肥胖")) {
            goal = "减脂";
        } else {
            goal = "保持";
        }
        DecimalFormat df = new DecimalFormat("0.00");  // 保留两位小数
        System.out.println("您的BMI是:" + df.format(bmi) + ",体型" + bodyType ); // 使用保留位数的bmi
        System.out.println("建议您持续:" + goal + ",加油!");

    }
}

------------------------------------------------ 执行后
D:\Software\jdk17\bin\java.exe "-javaagent:D:\Software\JetBrainsIntelliJ IDEA 2025.2.4\lib\idea_rt.jar=13988" -Dfile.encoding=UTF-8 -classpath D:\Software\JavaCode\p1-basic\out\production\p1-basic com.itheima.healthy.HeimaHealthy
请输入身高(单位:厘米): 178
请输入体重(单位:千克): 73.5
请输入年龄: 31
请输入性别(0:男/1:女): 0
请输入活动级别(0:久坐/1:轻度/2:中度/3:高度): 0
您的BMI是:23.20,体型正常
建议您持续:保持,加油!

Process finished with exit code 0

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

posted on 2025-12-23 14:57  马俊南  阅读(8)  评论(0)    收藏  举报