Java程序设计 北京大学 Week10互评作业

java程序设计mooc攻略

单元测验互评作业考试
week1测验2019冬期中测验
week2测验week2互评作业2019冬期末测验
week3测验week3互评作业
week4测验week4互评作业
week5测验week5互评作业
week6测验week6互评作业
week7测验week7互评作业
week8测验week8互评作业
week9测验week9互评作业
week10测验week10互评作业
week11测验吃不消,我自己是github上找了个项目上去
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.text.DecimalFormat;
import java.util.regex.*;

public class Bmi 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;
    
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            try {
                WeightIndex frame = new WeightIndex();
                frame.pack();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }
 
    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);
        contentPanel = new JPanel();
        contentPanel.setLayout(new BorderLayout());
        contentPane.add(contentPanel, BorderLayout.CENTER);
        submitButton = new JButton("计算");
        contentPane.add(submitButton, BorderLayout.SOUTH);
 
        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);
        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(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);
            }
 
        });
    }
 
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值