1

我正在编写一个 BMI 计算器应用程序。目前,如果我没有在一个字段中输入数据,则会发生一个错误,导致程序停止工作。例如,“高度”有两个 JTextFIeld,一个是英尺,另一个是英寸。如果我只是在英尺 JTextField 中输入“6”而在英寸 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 的代码,并简单地显示带有错误消息的消息对话框。现在,如果没有输入一个字段,则会出现消息对话框!

4

3 回答 3

0

只需检查您的 JTextField 对象是否包含文本。例如:

if (heightFt_TF.getText() == null || heightIn_TF.getText() == null || weight_TF.getText() == null) {
JOptionPane.showMessageDialog(null, "Please make sure all fields are filled in");
}

当然,您还必须确保文本字段的内容确实包含一个数字。

于 2012-11-20T15:03:16.270 回答
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 时才运行计算。

于 2012-11-20T15:30:42.643 回答
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;                    
}
于 2012-11-20T15:45:26.173 回答