我正在写一个BMI计算器应用程序。目前,如果我没有在一个字段中输入数据,则会发生错误导致程序停止工作。例如,有两个JTextFIelds用于' height&#39 ;,一个是英尺,另一个是英寸。如果我只输入' 6'进入脚JTextField并输入英寸JTextField,然后在重量JTextField中输入我的体重并点击计算,它不起作用。
我想要做的是显示一个消息对话框,说明"请确保填写所有字段"如果一个字段不包含数据。
以下是添加到我的'计算'的ActionHandler代码。按钮。
public void actionPerformed(ActionEvent e) {
double heightFT = ((Double.parseDouble(heightFt_TF.getText()));
double heightIn = (Double.parseDouble(heightIn_TF.getText()));
double weight = (Double.parseDouble(weight_TF.getText()));
double totalHeight = (heightFT*12) + heightIn;
BMI = (weight / (totalHeight*totalHeight)) * 703;
String s = BMI+"";
s = s.substring(0,4);
BMI_TF.setText(s);
}
我现在已经解决了这个问题。我所做的是添加'抛出NumberFormatException'在方法中并尝试捕获。在try代码块中,如果输入了所有数据字段,我编写了我想要执行的代码。在catch子句中,我编写了使用NumberFormatException的代码,只显示带有错误消息的消息对话框。现在,如果未输入一个字段,则会显示消息对话框!
答案 0 :(得分:0)
检查您的JTextField对象是否包含文本。 E.g:
if (heightFt_TF.getText() == null || heightIn_TF.getText() == null || weight_TF.getText() == null) {
JOptionPane.showMessageDialog(null, "Please make sure all fields are filled in");
}
当然,您还必须确保文本字段的内容确实包含数字。
答案 1 :(得分:0)
下载Apache Commons Lang库并使用StringUtils.isBlank(myTextField.getText());
验证您的字段。
public boolean validateFields() {
if (StringUtils.isBlank(heightFt_TF.getText()) {
// show message
return false;
}
if (StringUtils.isBlank(weight_TF.getText()) {
// show message
return false;
}
return true;
}
如果validateFields()返回true,则仅运行计算。
答案 2 :(得分:0)
public boolean validate(JTextField field) {
boolean result = field.getText() != null;
if (result) {
try {
Double.parseDouble(field.getText()));
} catch(NumberFormatException e) {
result = false
}
}
return result;
}