1

BMI 計算アプリケーションを作成しています。現在、1 つのフィールドにデータを入力しないと、プログラムが動作しなくなるエラーが発生します。たとえば、「高さ」には 2 つの JTextFIelds があり、1 つはフィートで、もう 1 つはインチです。足の JTextField に '6' を入力し、インチの JTextField に何も入力せず、体重の JTextField に体重を入力して [計算] をクリックしても機能しません。

私がやりたいのは、1 つのフィールドにデータが含まれていない場合に、「すべてのフィールドが入力されていることを確認してください」というメッセージ ダイアログを表示することです。

以下は、「計算」ボタンに追加された 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);                              
}

解決済み

私は今問題を修正しました。私がしたことは、メソッドに「throws NumberFormatException」を追加し、try catch を実行することでした。try コード ブロックでは、すべてのデータ フィールドが入力された場合に実行するコードを記述しました。catch 句では、NumberFormatException を使用し、メッセージ ダイアログにエラー メッセージを表示するだけのコードを記述しました。これで、1 つのフィールドが入力されていない場合、メッセージ ダイアログが表示されます。

4

3 に答える 3

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 に答える
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

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 に答える