当我运行jframe时,它总是显示“java.lang.NumberFormatException:空字符串”
假设在用户填写工资和加班文本字段时填写工资总额文本字段,但一旦程序启动,它总是显示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: empty String
# 1 楼答案
这里:
指示当鼠标进入屏幕上的某个组件时执行此代码
你必须理解:鼠标移动到某处与“用户在所有文本字段中输入了所有必需信息”不同
然后:
你可以/应该做什么:在对文本字段的内容做任何事情之前,先检查它们的内容
意思:在考虑解析之前,应该检查文本字段是否包含非空字符串。如果是这样,那么可以在try/catch块中进行解析。如果解析失败,你可以向用户显示一个消息框,告诉他你希望他输入什么。您应该分别为所有文本字段执行此操作
正如最初所说:问问自己什么时候应该进行检查/解析。当鼠标进入“某物”时真的会发生吗?或者更像是:当某个按钮被点击时就会发生这种情况
所以:解决方案也可能是编写新代码,并将其放入某种动作侦听器中。对按钮点击或菜单项选择等操作做出反应
# 2 楼答案
您可以实现类似于helper的方法,用于检查输入是否为有效的Double:
可能会有更快的实现,但这一个很简单而且很有效