1.题目
做一个窗体应用程序“体重指数计算器”,能根据用户输入的性别、身高、体重计算出“体质指数(身体质量指数)”,并给出是否偏胖的判断。其中,体质指数(BMI)=体重(kg)÷身高^2(m),大于24则为偏胖,更详细的判断可以在网上查查相关的资料。要求有用户界面组件(如文本框、单选按钮、按钮)、布局和事件处理。
评分标准:
是一个窗体应用程序(1分);
有按钮、文本框等组件(2分);
有布局(2分);
有事件处理(2分);
正确计算,并显示结果(2分);
总体较好(1分)。
2.题解
import javax
.swing
.*
;
import java
.awt
.*
;
import java
.awt
.event
.*
;
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
);
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
);
reset
.addActionListener(this);
cal
.addActionListener(this);
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();
});
}
}
转载请注明原文地址:https://blackberry.8miu.com/read-38426.html