BMI,Body Mass Index,身体质量指数,是用体重公斤数 除以 身高米数平方得出的,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。

而本文通过运用Java Swing实现了一个简单的BMI计算器。

最终运行界面:

功能:可以选择三个标准:中国、亚洲、WHO,计算结果稍有不同

计算公式:BMI = weight / (height*height)   即(体重公斤数)除以(身高米数的平方)

import javax.swing.*;
import javax.swing.border.EmptyBorder;import java.awt.*;
import java.text.DecimalFormat;
import java.util.regex.*;public class WeightIndex extends JFrame {private static final long serialVersionUID = 1L;private JPanel contentPane;private JLabel titleLabel;private JPanel contentPanel;private JButton submitButton;private ButtonGroup bg;private JPanel sexPanel;private JRadioButton ChinaRadio;private JRadioButton AsiaRadio;private JRadioButton WHORadio;private JPanel whPanel;private JLabel heightLabel;private JLabel weightLabel;private JTextField heightText;private JTextField weightText;private JPanel consolePanel;private JLabel consoleLabel;private JTextField consoleText;/*** 体重*/private double weight;/*** 身高*/private double height;/*** BMI指数*/private double BMI;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(() -> {try {WeightIndex frame = new WeightIndex();frame.pack();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}});}/*** Create the frame.*/public WeightIndex() {setTitle("身高体重指数计算器v1.0");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);//主容器contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));contentPane.setLayout(new BorderLayout(0, 0));setContentPane(contentPane);//标题,主容器北titleLabel = new JLabel("身高体重指数计算器");titleLabel.setHorizontalAlignment(SwingConstants.CENTER);contentPane.add(titleLabel, BorderLayout.NORTH);//存放选项的panel,主容器中contentPanel = new JPanel();contentPanel.setLayout(new BorderLayout());contentPane.add(contentPanel, BorderLayout.CENTER);//提交按钮,主容器南submitButton = new JButton("计算");contentPane.add(submitButton, BorderLayout.SOUTH);//存放性别选择的panel,选项北bg = new ButtonGroup();sexPanel = new JPanel();sexPanel.setLayout(new FlowLayout());contentPanel.add(sexPanel, BorderLayout.NORTH);ChinaRadio = new JRadioButton("中国标准");ChinaRadio.setSelected(true);AsiaRadio = new JRadioButton("亚洲标准");WHORadio = new JRadioButton("WHO(世界卫生组织)标准");bg.add(ChinaRadio);bg.add(AsiaRadio);bg.add(WHORadio);sexPanel.add(ChinaRadio);sexPanel.add(AsiaRadio);sexPanel.add(WHORadio);//存放身高体重的panel,选项中whPanel = new JPanel();whPanel.setLayout(new FlowLayout());contentPanel.add(whPanel, BorderLayout.CENTER);heightLabel = new JLabel("身高(米/m):");weightLabel = new JLabel("体重(千克/kg):");heightText = new JTextField(10);heightText.setToolTipText("请输入身高");weightText = new JTextField(10);weightText.setToolTipText("请输入体重");whPanel.add(heightLabel);whPanel.add(heightText);whPanel.add(weightLabel);whPanel.add(weightText);//结果consolePanel = new JPanel();consolePanel.setLayout(new FlowLayout());consoleLabel = new JLabel("你的身体质量指数为:");consoleText = new JTextField(28);consoleText.setEditable(false);consolePanel.add(consoleLabel);consolePanel.add(consoleText);contentPanel.add(consolePanel, BorderLayout.SOUTH);submitButton.addActionListener(e -> {String hstr = heightText.getText();String wstr = weightText.getText();Pattern pattern = Pattern.compile("^[0-9]+(.[0-9]+)?$");Matcher hisNum = pattern.matcher(hstr);Matcher wisNum = pattern.matcher(wstr);boolean acc = true;if (!hisNum.matches() || !wisNum.matches()) {acc = false;}if (acc) {height = Double.parseDouble(hstr);weight = Double.parseDouble(wstr);BMI = weight / (height * height);DecimalFormat df = new DecimalFormat("#.0");String out = "";if (ChinaRadio.isSelected()) {if (BMI < 18.5) {out = "偏瘦,瘦骨嶙峋的,多吃点吧!";} else if (BMI < 23.9) {out = "正常,棒棒哒!";} else if (BMI < 28) {out = "偏胖,你胖你就运动减肥!";} else if (BMI >= 28) {out = "肥胖,现在减肥来的及!";} else {out = "外星人派来的你哦,请重新输入!";}} else if (AsiaRadio.isSelected()) {if (BMI < 18.5) {out = "偏瘦,瘦骨嶙峋的,多吃点吧!";} else if (BMI < 22.9) {out = "正常,棒棒哒!";} else if (BMI < 24.9) {out = "偏胖,你胖你就运动减肥!";} else if (BMI < 30) {out = "肥胖,现在减肥来的及!";} else if (BMI >= 30) {out = "重度肥胖,不是一般人,赶紧减肥吧!";} else {out = "外星人派来的你哦,请重新输入!";}} else {if (BMI < 18.5) {out = "偏瘦,瘦骨嶙峋的,多吃点吧!";} else if (BMI < 24.9) {out = "正常,棒棒哒!";} else if (BMI < 29.9) {out = "偏胖,你胖你就运动减肥!";} else if (BMI < 34.9) {out = "肥胖,现在减肥来的及!";} else if (BMI < 39.9) {out = "重度肥胖,不是一般人,赶紧减肥吧!";} else if (BMI >= 40) {out = "极重度肥胖,那可能得去医院看看咯!";} else {out = "外星人派来的你哦,请重新输入!";}}consoleText.setText("你的指数为:" + df.format(BMI) + ",你的健康状况为:" + out);}});}}

20190419,对代码进行了部分重构。

JAVA Swing实现简单的体重指数(BMI)计算器相关推荐

  1. java swing实现简单的计算器源代码程序

    原文:java swing实现简单的计算器源代码程序 源代码下载地址:http://www.zuidaima.com/share/1792762695060480.htm 陌落馨 2014-04-23 ...

  2. Java Swing的简单学习

    计算机软件实习记录(第一周)--Java Swing的简单学习 Swing的认识 1)Swing是一个用于开发Java应用程序用户界面的开发工具包(GUI工具包),是JAVA基础类的一部分. 2)它包 ...

  3. JAVA swing实现简单的学生管理系统

    JAVA swing实现简单的学生管理系统 基本功能介绍 本系统实现了一个简单而实用的学生管理系统,通过这个学生管理系统我们可以进行一些基本的学生管理操作,它可以进行简单的添加学生.删除学生.修改学生 ...

  4. 使用Java Swing实现简单计算器

    import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Vector; public cl ...

  5. Java swing实现简单的浏览器源码免费分享

    ​此篇给大家分享一下Java swing写的一款简单的浏览器源码,实现了基本的浏览器功能,但是对最新的前端样式和js兼容比较差,用的内核是IE的比较老的,此外引入了eclipse的三个jar包,因为e ...

  6. java免费浏览器,Java swing实现简单的浏览器源码免费分享

    <p> <span style="color:#666666;font-family:"font-size:16px;background-color:#FFFF ...

  7. JAVA swing实现简单增删改查

    前言 欢迎大家来到我的博客,请各位看客们点赞.收藏.关注三连! 欢迎大家关注我的知识库,Java之从零开始 · 语雀 你的关注就是我前进的动力! CSDN专注于问题解决的博客记录,语雀专注于知识的收集 ...

  8. java 雷霆战机 教程,java swing实现简单的雷霆战机小游戏项目源码附带视频指导修改教程...

    <p> <span style="font-family:微软雅黑;font-size:19px;color:#666666;background-color:#FFFFF ...

  9. 【愚人节小程序】Java Swing的简单使用

    我们使用Java Swing图形用户界面库来创建我们的小程序,当用户单击一个按钮时,程序将弹出一个警告窗口,当用户按下"执行"按钮时,窗口上将出现一个愚人节笑话. 下面是一个实现此 ...

最新文章

  1. Win7中如何删除word模板
  2. 1075 PAT Judge (25 分)【难度: 一般 / 知识点: 多关键字排序】
  3. 用java画一个网格_用SolidWorks画一个空心挂钩,这种画法稍微有点麻烦
  4. JZOJ 5926. 【NOIP2018模拟10.25】naive 的图
  5. 整数划分递归相关问题
  6. 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
  7. vue mixins
  8. C语言 单链表查找出倒数第,查找单链表倒数第k个元素
  9. 如何不让Oracle使用Linux的swap分区
  10. java虚拟机缩写为_(01-03)Java虚拟机缩写为。
  11. 搜索控制器UISearchController的使用
  12. linux常用关机命令,linux下常用关机命令
  13. VS安装VAssistX插件导致WPF-XAML文件输入中文出现乱码问题解决方案
  14. svn可视化操作工具
  15. 线性混合模型及R实现
  16. paypal无法提现?最新解决办法(实战教程)!
  17. 港澳台、内地身份证号校验规则
  18. 华为2019春招留学生笔试第三题python
  19. 移动无线网卡服务器,贵阳移动无线网卡月租
  20. #Geek Talk# The Tech Trend (AI、Blockchain and IoT)

热门文章

  1. 问题解决:‘/run/user/1000/gvfs’: Permission denied
  2. jmeter参数化的四种方法
  3. php发送腾讯云变量短信源码,php结合腾讯云短信实现发送短信功能!(群发和单发都可以)...
  4. 中国看风水最好的大师有哪些【转载】
  5. python发送邮件脚本
  6. CBAM[2018-ECCV]
  7. oracle 9i 启动数据库,Oracle9i数据库的启动和停止
  8. JAVA毕设项目民宿运营管理网站(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  9. 分布式数据一致性(数据多份副本一致性)
  10. python-nonlocal关键字