Java Swing实现简单的体重指数(BMI)计算器功能示例
作者:Hisom 发布时间:2022-12-16 09:34:56
标签:Java,Swing,计算器
本文实例讲述了Java Swing实现简单的体重指数(BMI)计算器功能。分享给大家供大家参考,具体如下:
BMI,Body Mass Index,身体质量指数,是用体重公斤数 除以 身高米数平方得出的,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
而本文通过运用Java Swing实现了一个简单的BMI计算器。虽然现在网页上也有相应的网页应用,但是能够做出这个计算器来,还是有点成就感的,希望自己以后做出更多比这个好的应用。
最终运行效果:
功能:可以选择三个标准:中国、亚洲、WHO,计算结果稍有不同
计算公式:BMI = weight / (height*height) 即 体重公斤数 除以 身高米数平方
package WeightIndex;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.*;
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;
private double BMI;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
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(new ActionListener(){
public void actionPerformed(ActionEvent 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);
}
}
});
}
}
希望本文所述对大家java程序设计有所帮助。
来源:http://blog.csdn.net/u010992313/article/details/72083337
0
投稿
猜你喜欢
- 数组:数组可以用来保存多个基本数据类型的数据,也可以用来保存多个对象。数组的长度是不可改变的,一旦初始化数组时就指定了数组的长度(无论是静态
- 其实以前我对Java的Struts框架没有具体认识,通过这篇文章,真的让我了解了框架的用处,好处。下拉框在Web开发中经常会使用到,下面我们
- controller传boolean形式值@GetMapping("/check-cart")public List&l
- java 网络编程java.net 类 InetAddress 此类表示互联网协议 (IP) 地址。 会抛出异常 UnknownHostEx
- 一、什么是状态管理大到整个app的状态,用户使用app是登录状态,还是游客状态;小到一个按钮的状态,按钮是点击选中状态还是未点击状态等等,这
- 一、前言无论承接什么样的需求,是不是身边总有那么几个人代码写的烂,但是却时常有测试小姐姐过来聊天(求改bug)、有产品小伙伴送吃的(求写需求
- EntityWrapper的in用法EntityWrapper<UserLife> wrapper = new EntityWr
- 文档更新说明2018年09月24日 v1.0 初稿代理在生活中很常见,比如说婚介网站,其实就是找对象的代理;还有社保代理、人事代理;还有找黄
- 前言最近看插件库上少有的取色器大都是圆形的或者奇奇怪的的亚子,所以今天做两个矩形的颜色取色器提示:以下是本篇文章正文内容,下面案例可供参考一
- 目录说明使用常见问题No such instance field: 'logger2'说明logback作为log4j的替代
- 第一次接触到随机数还是在c语言里面 使用的是 rand(); 但是重新执行一次的时候会发现,诶,居然和上一次执行的结果是一样的,因为没有初始
- Android 微信摇一摇功能实现,最近学习传感器,就想实现摇一摇的功能,上网查了些资料,就整理下。如有错误,还请指正。开发环境Androi
- 以前就遇到过这个问题,今天重新拾起来。跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来:方法1:(直接xm
- 一、背景在上一篇文章中,我们使用Seata整合了SpringBoot,在这篇文章中我们使用Seata整合SpringCloud。同时有了上一
- * String类是不可变类,只要对String进行修改,都会导致新的对象生成。* StringBuffer和StringBuilder都是
- 最近学习Spring,一直不太明白Srping的切面编程中的的argNames的含义,经过学习研究后,终于明白,分享一下需要监控的类:pac
- 说点对这几个容易混淆的词的理解:1、c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识
- 前言本文主要是将最近工作中遇到的一个问题进行总结分享,主要介绍的是如何让WebView中H5页面全屏播放视频。关于这个问题,做一下简单分析,
- SpringBoot分离打Jar包的两种方式方式一:基于maven-jar-plugin此方式基于这个小伙伴的配置改的:https://ww
- 本文实例为大家分享了java仿windows记事本小程序的具体代码,供大家参考,具体内容如下import java.awt.Checkbox