10.基础语法-课程安排

10 课程安排

10.1 案例

三种内容:角色、指示、输出说明
你扮演一个经验丰富的Java培训老师。

我正在学习Java基础语法,我需要实现一个控制台小程序,可以根据用户提供的基本信息计算用户身体指标,判断用户体型。然后计算每日热量消耗。并给出每日摄入热量建议,每日摄入的蛋白质、碳水、脂肪的具体值。

帮我分析该如何实现,如果涉及到计算的,请给出具体的计算公式和解释。
HealthCalculator.java
package com.itheima.ai;

import java.util.Scanner;

public class HealthCalculator {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("=================================");
        System.out.println("    欢迎使用健康指标计算器");
        System.out.println("=================================");
        
        // 获取用户基本信息
        System.out.print("请输入您的性别 (M-男性/F-女性): ");
        char gender = scanner.next().charAt(0);
        
        System.out.print("请输入您的年龄: ");
        int age = scanner.nextInt();
        
        System.out.print("请输入您的身高 (cm): ");
        double height = scanner.nextDouble();
        
        System.out.print("请输入您的体重 (kg): ");
        double weight = scanner.nextDouble();
        
        System.out.println("\n请选择您的活动水平:");
        System.out.println("1. 久坐 (几乎不运动)");
        System.out.println("2. 轻度活动 (每周1-3天运动)");
        System.out.println("3. 中度活动 (每周3-5天运动)");
        System.out.println("4. 高度活动 (每周6-7天运动)");
        System.out.println("5. 极高活动 (体力劳动/每天训练)");
        System.out.print("请选择 (1-5): ");
        int activityChoice = scanner.nextInt();
        
        // 计算BMI
        double bmi = calculateBMI(weight, height);
        String bodyType = determineBodyType(bmi);
        
        // 计算BMR
        double bmr = calculateBMR(gender, age, height, weight);
        
        // 获取活动系数
        double activityFactor = getActivityFactor(activityChoice);
        
        // 计算TDEE
        double tdee = calculateTDEE(bmr, activityFactor);
        
        // 计算营养素建议
        double[] nutrients = calculateNutrients(tdee);
        
        // 输出结果
        displayResults(bmi, bodyType, bmr, tdee, nutrients);
        
        scanner.close();
    }
    
    /**
     * 计算BMI
     * @param weight 体重(kg)
     * @param height 身高(cm)
     * @return BMI值
     */
    public static double calculateBMI(double weight, double height) {
        double heightInMeters = height / 100.0; // 转换为米
        return weight / (heightInMeters * heightInMeters);
    }
    
    /**
     * 判断体型
     * @param bmi BMI值
     * @return 体型描述
     */
    public static String determineBodyType(double bmi) {
        if (bmi < 18.5) {
            return "偏瘦";
        } else if (bmi < 24.9) {
            return "正常";
        } else if (bmi < 29.9) {
            return "超重";
        } else {
            return "肥胖";
        }
    }
    
    /**
     * 计算基础代谢率(BMR)
     * @param gender 性别('M'或'F')
     * @param age 年龄
     * @param height 身高(cm)
     * @param weight 体重(kg)
     * @return BMR值
     */
    public static double calculateBMR(char gender, int age, double height, double weight) {
        if (gender == 'M' || gender == 'm') {
            // 男性BMR公式
            return 10 * weight + 6.25 * height - 5 * age + 5;
        } else {
            // 女性BMR公式
            return 10 * weight + 6.25 * height - 5 * age - 161;
        }
    }
    
    /**
     * 根据选择获取活动系数
     * @param choice 活动等级选择(1-5)
     * @return 活动系数
     */
    public static double getActivityFactor(int choice) {
        switch (choice) {
            case 1: return 1.2;   // 久坐
            case 2: return 1.375; // 轻度活动
            case 3: return 1.55;  // 中度活动
            case 4: return 1.725; // 高度活动
            case 5: return 1.9;   // 极高活动
            default: return 1.2;  // 默认久坐
        }
    }
    
    /**
     * 计算总日常能量消耗(TDEE)
     * @param bmr 基础代谢率
     * @param activityFactor 活动系数
     * @return TDEE值
     */
    public static double calculateTDEE(double bmr, double activityFactor) {
        return bmr * activityFactor;
    }
    
    /**
     * 计算三大营养素建议摄入量
     * @param totalCalories 总热量
     * @return 包含蛋白质、碳水化合物、脂肪克数的数组
     */
    public static double[] calculateNutrients(double totalCalories) {
        double[] nutrients = new double[3];
        
        // 分配比例:蛋白质25%,碳水化合物50%,脂肪25%
        double proteinCalories = totalCalories * 0.25;   // 蛋白质热量
        double carbCalories = totalCalories * 0.50;      // 碳水化合物热量
        double fatCalories = totalCalories * 0.25;       // 脂肪热量
        
        // 转换为克数 (蛋白质和碳水化合物每克4千卡,脂肪每克9千卡)
        nutrients[0] = proteinCalories / 4;  // 蛋白质克数
        nutrients[1] = carbCalories / 4;     // 碳水化合物克数
        nutrients[2] = fatCalories / 9;      // 脂肪克数
        
        return nutrients;
    }
    
    /**
     * 显示计算结果
     * @param bmi BMI值
     * @param bodyType 体型
     * @param bmr 基础代谢率
     * @param tdee 每日总消耗
     * @param nutrients 营养素数组
     */
    public static void displayResults(double bmi, String bodyType, double bmr, 
                                    double tdee, double[] nutrients) {
        System.out.println("\n=================================");
        System.out.println("         健康分析报告");
        System.out.println("=================================");
        System.out.printf("BMI指数: %.2f\n", bmi);
        System.out.println("体型判断: " + bodyType);
        System.out.printf("基础代谢率(BMR): %.0f 千卡/天\n", bmr);
        System.out.printf("每日总能量消耗(TDEE): %.0f 千卡/天\n", tdee);
        System.out.printf("建议每日摄入热量: %.0f 千卡\n", tdee);
        System.out.println("\n建议每日营养素摄入量:");
        System.out.printf("  蛋白质: %.1f 克\n", nutrients[0]);
        System.out.printf("  碳水化合物: %.1f 克\n", nutrients[1]);
        System.out.printf("  脂肪: %.1f 克\n", nutrients[2]);
        System.out.println("=================================");
    }
}

10.2 课程安排

  1.注释

  2.变量和常量

  3.数据存储原理

  4.数据类型

  5.算术运算

  6.流程控制

  7.方法

  8.数组

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

                                                                                                                         无敌小马爱学习

posted on 2025-11-28 11:47  马俊南  阅读(8)  评论(0)    收藏  举报