在我的项目中,我将JTextField
设置为发票中的总计。它的名字是txtGtotal
。当客户支付预付款时,他会在txtAdvance JTextField
中输入其值,然后我写了一封电话给txtAdvance
的关键发布,以便将到期付款设置为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
:空字符串错误。但是在我用数字值替换那个空txtAdvance jtextfeild
之后,系统正确地措辞了。我怎么能阻止这个错误。因为他们显示错误是在电源线的第二行。它产生一个名为double ad的变量。
答案 0 :(得分: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);
}
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
你可以说,按Backspace不应该触发动作,试试这个:
if(evt.getKeyCode() != 8){ //Backspace
double gtotal = Double.parseDouble(txtGtotal.getText());
double ad = Double.parseDouble(txtAdvance.getText());
double due = gtotal - ad;
}