猿问

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

当用户填写工资和加班文本字段时,假设要填写总薪资文本字段,但是一旦程序启动它总是显示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


紫衣仙女
浏览 452回答 2
2回答

浮云间

这里:private void jTextGrossPayMouseEntered(表示当鼠标进入屏幕上的某个组件时,将执行此代码。你必须明白:鼠标移动的地方是不是为“用户输入的所有文本字段所有需要的信息”一样。然后:double salary = Double.parseDouble(jTextBasicSalary.getText());您可以/应该做什么:在对内容进行任何操作之前,请检查文本字段的内容!含义:在考虑解析之前,您应该检查文本字段是否包含非空字符串。如果是这样,那么您可以在try / catch块中进行解析。如果解析失败,您可以向用户显示一个消息框,告诉他您希望他输入的内容。您应该分别为所有文本字段执行此操作。最初说的是:问问自己何时应该进行检查/解析。当鼠标进入“某物”时真的会发生吗?或者更像是:当某个按钮被点击时会发生这种情况?所以:解决方案也可能是编写新代码,并将其放入某种动作侦听器中。这会对按钮点击或选择菜单项等操作做出反应!

白板的微信

你可以实现类似帮助方法的东西,检查输入是否是有效的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;     }}可能会有更快的实现,但这个很容易并且有效...
随时随地看视频慕课网APP

相关分类

Java
我要回答