Java 学习笔记 —— BMI & BMR 计算器

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
EMR Serverless StarRocks,5000CU*H 48000GB*H
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。

Java 学习笔记 —— BMI & BMR 计算器

一、项目背景

今天练习了一个小程序,使用 Java 输入用户的年龄、性别、身高、体重,计算并输出:

  • BMI(Body Mass Index,身体质量指数)
  • BMR(Basal Metabolic Rate,基础代谢率)

这个小项目帮助我理解了:

  1. Scanner 的使用(输入数据)
  2. 循环与输入验证
  3. 条件判断 if-else
  4. 数学公式的实现
  5. 格式化输出

二、程序源码

package com.itheima.operate;

import java.util.Scanner;

public class HomeWork {
   
    public static void main(String[] args) {
   
        int age;
        String gender = "M";
        double weight = 0;
        double height = 0;

        Scanner scanner = new Scanner(System.in);

        // 输入年龄
        System.out.print("请输入年龄:");
        age = scanner.nextInt();
        System.out.println("已输入年龄" + age);

        // 输入性别(带验证)
        System.out.print("请输入性别:");
        while (true) {
   
            gender = scanner.next();
            if (gender.equals("M") || gender.equals("m") || gender.equals("F") || gender.equals("f")) {
   
                break;
            }
            System.out.println("性别输入错误,请再次输入:");
        }
        System.out.println("已输入性别" + gender);

        // 输入体重
        System.out.print("请输入体重(KG):");
        weight = scanner.nextDouble();
        System.out.println("已输入体重" + weight);

        // 输入身高
        System.out.print("请输入身高(CM):");
        height = scanner.nextDouble();
        System.out.println("已输入身高" + height);

        // 计算 BMI
        double BMI = weight / (height * height * 0.0001); // 注意身高单位转换
        System.out.print("您的BMI数值为: " + String.format("%.1f", BMI) + "\n您的体型:");
        if (BMI < 18.5) {
   
            System.out.println("偏瘦");
        } else if (BMI >= 18.5 && BMI < 25) {
   
            System.out.println("正常");
        } else if (BMI >= 25 && BMI < 30) {
   
            System.out.println("超重");
        } else if (BMI >= 30) {
   
            System.out.println("肥胖");
        } else {
   
            System.out.println("未知");
        }

        // 计算 BMR
        double BMR = 0;
        if (gender.equals("M") || gender.equals("m")) {
   
            // 男性公式
            BMR = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age);
        } else {
   
            // 女性公式
            BMR = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age);
        }
        System.out.print("您的BMR数值为: " + String.format("%.1f", BMR));
    }
}

三、关键知识点总结

1. Scanner 输入

  • scanner.nextInt() → 读取整数
  • scanner.nextDouble() → 读取浮点数
  • scanner.next() → 读取字符串

2. 输入验证

while (true) {
   
    gender = scanner.next();
    if (gender.equals("M") || gender.equals("m") || gender.equals("F") || gender.equals("f")) {
   
        break; // 输入合法时跳出循环
    }
    System.out.println("性别输入错误,请再次输入:");
}
  • 使用 while(true) 循环不断检查输入是否合法。
  • equals 判断字符串,而不是 ==

3. BMI 公式

[BMI = \frac{\text{体重(kg)}}{\text{身高(m)}^2}]

👉 注意:身高输入的是 厘米 (cm),要转换成 米 (m),所以公式写成:

double BMI = weight / (height * height * 0.0001);

4. BMI 分类

  • < 18.5 → 偏瘦
  • 18.5 ~ 24.9 → 正常
  • 25 ~ 29.9 → 超重
  • ≥ 30 → 肥胖

5. BMR 公式(Harris-Benedict 修正版)

  • 男性:
    [BMR = 88.362 + (13.397 \times 体重kg) + (4.799 \times 身高cm) - (5.677 \times 年龄)]
  • 女性:
    [BMR = 447.593 + (9.247 \times 体重kg) + (3.098 \times 身高cm) - (4.330 \times 年龄)]

6. 格式化输出

String.format("%.1f", BMI); // 保留一位小数

四、运行示例

输入:

请输入年龄: 25
请输入性别: M
请输入体重(KG): 70
请输入身高(CM): 175

输出:

已输入年龄25
已输入性别M
已输入体重70.0
已输入身高175.0
您的BMI数值为: 22.9
您的体型: 正常
您的BMR数值为: 1673.6

五、学习收获

  1. 学会了 输入验证,防止用户输入非法数据。
  2. 理解了 BMI 和 BMR 的计算公式,能用 Java 实现。
  3. 掌握了 格式化输出,控制小数位数。
  4. 巩固了 条件判断与循环 的实际应用。

📌 以后可以扩展的功能:

  • 根据 BMR 计算每日所需总热量(结合活动系数)。
  • 根据 BMI & BMR 给出健康建议。
  • 把输入输出做成 图形界面(Swing/JavaFX)
相关文章
|
6天前
|
人工智能 运维 安全
|
4天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
528 14
|
11天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
896 109
|
5天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。