1

私のプロジェクトJTextFieldでは、請求書に総計を設定しています。その名はtxtGtotal。顧客が前払い金を支払うとき、彼はその値を入力します。txtAdvance JTextField私はコードを書いて、txtAdvance支払期日を に設定しtxtDue JTextFieldます。(顧客が前払いをしなかった場合は、0 と入力し、0 を設定する必要がtxtAdvanceありtxtDueます)

以下は、キーイベントへのコードです。

private void txtAdvanceKeyReleased(java.awt.event.KeyEvent evt) {
    double gtotal = Double.parseDouble(txtGtotal.getText());
    double ad = Double.parseDouble(txtAdvance.getText());
    double due = gtotal - ad;
}

私の質問は、数値をクリアして、txtAdvance入力する前に別の数値を入力しようとすると、これが発生しjava.lang.NumberFormatExceptionます:空の文字列エラーです。しかし、その空txtAdvance jtextfeildを数値に置き換えた後、システムは適切に表現されています。どうすればそのエラーを止めることができますか。彼らがエラーを示しているように、コードの2行目にあります。ダブル広告と呼ばれる変数を作成します。

4

3 に答える 3

3

明らかな解決策はどうですか:

private void txtAdvanceKeyReleased(java.awt.event.KeyEvent evt) {
    double gtotal = parseDouble(txtGtotal.getText());
    double ad = parseDouble(txtAdvance.getText());
    double due = gtotal - ad;
}

private double parseDouble(String s){
    if(s == null || s.isEmpty()) 
        return 0.0;
    else
        return Double.parseDouble(s);
}
于 2013-10-31T13:45:59.883 に答える
1

空の文字列エラーを取り除くには、簡単なチェックを行うことができます。

   private void txtAdvanceKeyReleased(java.awt.event.KeyEvent evt) {
      if(!txtGtotal.getText().trim().equals("") && !txtAdvance.getText().trim().equals("")){
        double gtotal = Double.parseDouble(txtGtotal.getText());
        double ad = Double.parseDouble(txtAdvance.getText());
        double due = gtotal - ad;
      }
    }
于 2013-10-31T13:46:17.030 に答える
0

Backspace を押してもアクションが起動されないようにするには、次のようにします。

if(evt.getKeyCode() != 8){ //Backspace
    double gtotal = Double.parseDouble(txtGtotal.getText());
    double ad = Double.parseDouble(txtAdvance.getText());
    double due = gtotal - ad;
}
于 2013-10-31T13:42:31.260 に答える