假定在用户填写工资和加班费文本字段时填写总薪水文本字段,但是程序一旦启动,它总是显示java.lang.NumberFormatException:空字符串错误
这是使用的代码
private void jTextGrossPayMouseEntered(java.awt.event.MouseEvent evt) {
try{
DecimalFormat numberFormat = new DecimalFormat("#.00");
double salary = Double.parseDouble(jTextBasicSalary.getText());
double hours = Double.parseDouble(jTextHours.getText());
double overtime = Double.parseDouble(jTextOvertime.getText());
double overtimepay = Double.parseDouble(jTextOvertimePay.getText());
double total1;
double total2;
double total3;
total1 = salary * hours;
total2 = overtime * overtimepay;
total3 = total1 + total2;
String gross = String.valueOf(total3);
jTextGrossPay.setText(gross);
}
catch(Exception e){
e.printStackTrace();
}
}
在我运行程序之后,这些就是错误
java.lang.NumberFormatException:空字符串
答案 0 :(得分:1)
这里:
private void jTextGrossPayMouseEntered(
表示当鼠标输入屏幕上的某些组件时,将执行此代码。
您必须了解:鼠标移到某处不与“用户已在所有文本字段中输入了所有必需信息”相同。
然后:
double salary = Double.parseDouble(jTextBasicSalary.getText());
您可以/应该做的事情:检查文本字段的内容,然后再对其内容进行任何操作!
含义:在考虑解析之前,您应该检查文本字段是否包含非空字符串。如果是这样,则可以在try / catch块中进行解析。而且,如果解析失败,您可以向用户显示一个消息框,告诉他您希望他输入什么。您应该分别对所有文本字段执行此操作。
正如最初所说:何时问自己应该进行检查/解析。当鼠标进入“某物”时是否真的会发生?还是更像是:单击某个按钮时应该发生这种情况?
所以:解决方案也可能是编写新代码,然后将其放入某种动作侦听器中。这对诸如单击按钮或选择菜单项之类的动作有反应!
答案 1 :(得分:0)
您可以实现类似帮助方法的方法,该方法检查输入是否为有效的Double:
private boolean checkValidInput(String input) {
try {
Double.parseDouble(input);
return true;
} catch (Exception e){
System.out.println("input :" + input +" is not a valid double");
return false;
}
}
可能会有更快的实现,但是这一实现很容易并且可行...