有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当我运行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


共 (2) 个答案

  1. # 1 楼答案

    这里:

    private void jTextGrossPayMouseEntered(
    

    指示当鼠标进入屏幕上的某个组件时执行此代码

    你必须理解:鼠标移动到某处与“用户在所有文本字段中输入了所有必需信息”不同

    然后:

    double salary = Double.parseDouble(jTextBasicSalary.getText());
    

    你可以/应该做什么:在对文本字段的内容做任何事情之前,先检查它们的内容

    意思:在考虑解析之前,应该检查文本字段是否包含非空字符串。如果是这样,那么可以在try/catch块中进行解析。如果解析失败,你可以向用户显示一个消息框,告诉他你希望他输入什么。您应该分别为所有文本字段执行此操作

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

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

  2. # 2 楼答案

    您可以实现类似于helper的方法,用于检查输入是否为有效的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;
        }
    }
    

    可能会有更快的实现,但这一个很简单而且很有效