为了账号安全,请及时绑定邮箱和手机立即绑定

当我运行我的jframe时,它总是显示

当我运行我的jframe时,它总是显示

紫衣仙女 2019-04-10 14:11:36
当用户填写工资和加班文本字段时,假设要填写总薪资文本字段,但是一旦程序启动它总是显示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块中进行解析。如果解析失败,您可以向用户显示一个消息框,告诉他您希望他输入的内容。您应该分别为所有文本字段执行此操作。

最初说的是:问问自己何时应该进行检查/解析。当鼠标进入“某物”时真的会发生吗?或者更像是:当某个按钮被点击时会发生这种情况?

所以:解决方案也可能是编写新代码,并将其放入某种动作侦听器中。这会对按钮点击或选择菜单项等操作做出反应!


查看完整回答
反对 回复 2019-05-15
?
白板的微信

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;
    }}

可能会有更快的实现,但这个很容易并且有效...


查看完整回答
反对 回复 2019-05-15
  • 2 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信