软件编程
位置:首页>> 软件编程>> java编程>> Java Swing实现简单的体重指数(BMI)计算器功能示例

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

作者:Hisom  发布时间:2022-12-16 09:34:56 

标签:Java,Swing,计算器

本文实例讲述了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("脚本之家 - 身高体重指数计算器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
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com