28.基础语法-健康饮食计划案例02
28 健康饮食计划案例02
28.1 代码实现
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 + ",加油!"); // 3.计算每日摄入热量建议, 包括BMR/TDEE/每日热量 // 3.1 计算BMR double bmr = 0; // 先定义, 下面 if 再赋值, 避免空指针(即 直接if中使用,内存没有开辟空间, 造成空指针) if (gender == 0) { // 男性计算 bmr = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age); } else if (gender == 1) { // 女性计算 bmr = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age); } // 3.2 计算TDEE double activityFactor = 0; if (activityLevel == 0) { // 久坐 activityFactor = 1.2; } else if (activityLevel == 1) { // 轻度 activityFactor = 1.375; } else if (activityLevel == 2) { // 中度 activityFactor = 1.55; } else { // 高度 activityFactor = 1.725; } double tdee = bmr * activityFactor; // 3.3 计算每日摄入热量 double dailyCalories = tdee; if (goal.equals("减脂")) { dailyCalories = tdee - 300; } else if (goal.equals("增肌")) { dailyCalories = tdee + 300; } // 4.计算每日摄入的营养素的质量 double protein = dailyCalories * 0.3 / 4; double fat = dailyCalories * 0.2 / 9; double carbohydrate = dailyCalories * 0.5 / 4; // 5.输出结果 DecimalFormat df2 = new DecimalFormat("0"); // 不保留小数 System.out.println("================== 饮食计划:======================="); System.out.println("您的每日基础代谢为: " + df2.format(bmr) + "kcal, 结合运动后的总代谢: " + df2.format(tdee) + "kacl"); System.out.println("结合您的运动目标, 建议您每日摄入: " + df2.format(dailyCalories) + "kcal, 其中:"); System.out.println("蛋白质: " + df2.format(protein) + "克"); System.out.println("脂肪: " + df2.format(fat) + "克"); System.out.println("碳水化合物: " + df2.format(carbohydrate) + "克"); System.out.println("=================================================="); } } ------------------------------------------------ 执行后 D:\Software\jdk17\bin\java.exe "-javaagent:D:\Software\JetBrainsIntelliJ IDEA 2025.2.4\lib\idea_rt.jar=5469" -Dfile.encoding=UTF-8 -classpath D:\Software\JavaCode\p1-basic\out\production\p1-basic com.itheima.healthy.HeimaHealthy 请输入身高(单位:厘米): 178 请输入体重(单位:千克): 72.5 请输入年龄: 31 请输入性别(0:男/1:女): 0 请输入活动级别(0:久坐/1:轻度/2:中度/3:高度): 0 您的BMI是:22.88,体型正常 建议您持续:保持,加油! ================== 饮食计划:======================= 您的每日基础代谢为: 1738kcal, 结合运动后的总代谢: 2085kacl 结合您的运动目标, 建议您每日摄入: 2085kcal, 其中: 蛋白质: 156克 脂肪: 46克 碳水化合物: 261克 ================================================== Process finished with exit code 0
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号