当用户填写工资和加班文本字段时,假设要填写总薪资文本字段,但是一旦程序启动它总是显示java.lang.NumberFormatException:empty String error这是使用的代码 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:empty String
2 回答
浮云间
TA贡献1829条经验 获得超4个赞
这里:
private void jTextGrossPayMouseEntered(
表示当鼠标进入屏幕上的某个组件时,将执行此代码。
你必须明白:鼠标移动的地方是不是为“用户输入的所有文本字段所有需要的信息”一样。
然后:
double salary = Double.parseDouble(jTextBasicSalary.getText());
您可以/应该做什么:在对内容进行任何操作之前,请检查文本字段的内容!
含义:在考虑解析之前,您应该检查文本字段是否包含非空字符串。如果是这样,那么您可以在try / catch块中进行解析。如果解析失败,您可以向用户显示一个消息框,告诉他您希望他输入的内容。您应该分别为所有文本字段执行此操作。
最初说的是:问问自己何时应该进行检查/解析。当鼠标进入“某物”时真的会发生吗?或者更像是:当某个按钮被点击时会发生这种情况?
所以:解决方案也可能是编写新代码,并将其放入某种动作侦听器中。这会对按钮点击或选择菜单项等操作做出反应!
白板的微信
TA贡献1883条经验 获得超3个赞
你可以实现类似帮助方法的东西,检查输入是否是有效的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; }}
可能会有更快的实现,但这个很容易并且有效...
添加回答
举报
0/150
提交
取消