本文實例講述了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("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程序設計有所幫助。
新聞熱點
疑難解答
圖片精選