当我运行jframe时,它始终显示“ java.lang.NumberFormatException:空字符串”

时间:2019-05-13 07:23:26

标签: java jframe textfield mouseenter

假定在用户填写工资和加班费文本字段时填写总薪水文本字段,但是程序一旦启动,它总是显示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:空字符串

2 个答案:

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

可能会有更快的实现,但是这一实现很容易并且可行...