簡體   English   中英

如何修復數字格式異常:空字符串

[英]How to fix Number Format Exception: empty String

在我的項目中,我將JTextField設置為在發票中設置總計。 它的名字是txtGtotal 當客戶支付預付款時,他在txtAdvance JTextField鍵入其值,然后我寫了txtAdvancetxtAdvance的keyreleasing以設置到txtDue JTextField的到期付款。 (如果客戶沒有支付任何預付款,他應該在txtAdvance鍵入0並且txtDue也設置為0)

以下是我對重要事件的看法。

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 :empty String error。 但是在我用數字值替換了那個空的txtAdvance jtextfeild之后,系統正確地措辭了。 我怎么能阻止這個錯誤。 因為他們顯示錯誤是在電源線的第二行。 它產生一個名為double ad的變量。

明顯的解決方案怎么樣:

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);
}

要擺脫空字符串錯誤,你可以做一個簡單的檢查。

   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;
      }
    }

你可以說,按Backspace不應該觸發動作,試試這個:

if(evt.getKeyCode() != 8){ //Backspace
    double gtotal = Double.parseDouble(txtGtotal.getText());
    double ad = Double.parseDouble(txtAdvance.getText());
    double due = gtotal - ad;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM