![](/img/trans.png)
[英]What causes “Number format exception / empty string” error in the following code?
[英]How to fix Number Format Exception: empty String
在我的項目中,我將JTextField
設置為在發票中設置總計。 它的名字是txtGtotal
。 當客戶支付預付款時,他在txtAdvance JTextField
鍵入其值,然后我寫了txtAdvance
給txtAdvance
的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.