首页 > 开发 > Java > 正文

Java Swing实现简单的体重指数(BMI)计算器功能示例

2024-07-13 10:14:35
字体:
来源:转载
供稿:网友

本文实例讲述了Java Swing实现简单的体重指数(BMI)计算器功能。分享给大家供大家参考,具体如下:

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

而本文通过运用Java Swing实现了一个简单的BMI计算器。虽然现在网页上也有相应的网页应用,但是能够做出这个计算器来,还是有点成就感的,希望自己以后做出更多比这个好的应用。

最终运行效果:

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("VeVb武林网 - 身高体重指数计算器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程序设计有所帮助。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表