【中国大学MOOC】java程序设计-week10-做一个窗体应用程序“体重指数计算器”

    科技2025-05-13  8

    1.题目

    做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数(身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、单选按钮、按钮)、布局和事件处理。

    评分标准:

    是一个窗体应用程序(1分);

    有按钮、文本框等组件(2分);

    有布局(2分);

    有事件处理(2分);

    正确计算,并显示结果(2分);

    总体较好(1分)。

    2.题解

    /* encoding = GBK */ import javax.swing.*; import java.awt.*; import java.awt.event.*; /* 输入性别:boy / girl eg:boy 输入身高:数字,单位m eg:1.8 输入体重:数字,单位kg eg:65 点击Calculate,计算得到BMI指数,并且根据BMI指数高低给出评价建议 (18.5-24为正常,小于18.5过瘦,大于24过胖) 点击Reset,重置清零 */ public class homework10 extends JFrame implements ActionListener{ JLabel sex = new JLabel("Sex", JLabel.CENTER); JLabel height = new JLabel("Height(m)", JLabel.CENTER); JLabel weight = new JLabel("Weight(kg)", JLabel.CENTER); JTextField tsex = new JTextField("boy"); JTextField theight = new JTextField("0.0"); JTextField tweight = new JTextField("0.0"); JButton reset = new JButton("Reset"); JButton cal = new JButton("Calculate"); JLabel bmi = new JLabel("BMI=Weight/Height^2", JLabel.CENTER); JTextField tbmi = new JTextField(); JTextField comment = new JTextField(); public homework10(){ super("BMI 计算器"); tsex.setHorizontalAlignment(JTextField.CENTER); theight.setHorizontalAlignment(JTextField.CENTER); tweight.setHorizontalAlignment(JTextField.CENTER); tbmi.setHorizontalAlignment(JTextField.CENTER); comment.setHorizontalAlignment(JTextField.CENTER); // add components JPanel pnlBody = new JPanel(new GridLayout(5, 2)); pnlBody.add(sex); pnlBody.add(tsex); pnlBody.add(height); pnlBody.add(theight); pnlBody.add(weight); pnlBody.add(tweight); pnlBody.add(reset); pnlBody.add(cal); pnlBody.add(bmi); pnlBody.add(tbmi); getContentPane().setLayout(new BorderLayout()); getContentPane().add(BorderLayout.CENTER, pnlBody); getContentPane().add(BorderLayout.SOUTH, comment); // register listeners reset.addActionListener(this); cal.addActionListener(this); // set frame properties setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setSize(300,300); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if(source == reset) handleReset(); else if(source == cal) handleCal(); else System.out.println("Error"); } private void handleReset() { tsex.setText("boy"); theight.setText("0.0"); tweight.setText("0.0"); tbmi.setText("0.0"); comment.setText("等待输入"); } private void handleCal() { String str_sex = tsex.getText(); double num_theight = Double.parseDouble(theight.getText()); double num_tweight = Double.parseDouble(tweight.getText()); double num_bmi = num_tweight/(num_theight*num_theight); tbmi.setText(String.format("%.4f", num_bmi)); if(num_bmi<18.5) comment.setText("体重过轻,多吃点!"); else if(num_bmi>24) comment.setText("体重过重,赶快锻炼吧!"); else{ if(str_sex.contains("boy")) comment.setText("小伙子BMI正常,祝你早日走向人生巅峰!"); else comment.setText("小姑娘BMI正常,祝你早日拥有了小蛮腰!"); } } public static void main(String[] args){ SwingUtilities.invokeLater(()->{ new homework10(); }); } }
    Processed: 0.010, SQL: 8