【问题标题】:Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:空
【发布时间】:2017-11-20 15:26:27
【问题描述】:

有人可以帮助我吗?我在 Netbeans 中遇到了这个异常

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: 
empty 
String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)

这是我的代码的一部分,可能会导致异常:

   private void pizzaMouseClicked(java.awt.event.MouseEvent evt) {                                        
   double cMeal = Double.parseDouble(costmeal.getText());
   double qPizza = Double.parseDouble(qtypizza.getText());
   double cPizaa = 6000;


        if(pizza.isSelected())
        {
        i[0] = (qPizza * cPizaa) + cMeal;
        String pMeal = String.format("%.2f", i[0]);
        costmeal.setText(pMeal); 
        }
}   

谁能告诉我如何解决它?谢谢

【问题讨论】:

    标签: java swing


    【解决方案1】:

    您必须检查 costmeal.getText() 和 qtypizza.getText() 是否都包含有效数字,根据快照代码和堆栈跟踪,其中一个似乎是 Empty。

    【讨论】:

    • 谢谢它的工作,但costmeal显示6000.00而不是6000,如何解决这个问题?而且如果我改变它不会自动计算的数量
    • 我按照 youtube 中的教程进行操作:youtube.com/watch?v=QTiAEHzirOk,但教程中的代码运行不佳
    【解决方案2】:

    NumberFormatException 是当您尝试将字符串转换为数字(int、double、float 等)时可能引发的异常。您必须通过将代码放入 try catch 或将异常添加到方法签名来处理异常。

    private void pizzaMouseClicked(java.awt.event.MouseEvent evt) throws NumberFormatException {                                        
       double cMeal = Double.parseDouble(costmeal.getText());
       double qPizza = Double.parseDouble(qtypizza.getText());
       double cPizaa = 6000;
       if(pizza.isSelected())
       {
           i[0] = (qPizza * cPizaa) + cMeal;
           String pMeal = String.format("%.2f", i[0]);
           costmeal.setText(pMeal); 
        }
    }   
    

    或者

    private void  pizzaMouseClicked(java.awt.event.MouseEvent evt) {       
        try{                                 
            double cMeal = Double.parseDouble(costmeal.getText());
            double qPizza = Double.parseDouble(qtypizza.getText());
            double cPizaa = 6000;
    
    
            if(pizza.isSelected())
            {
                i[0] = (qPizza * cPizaa) + cMeal;
                String pMeal = String.format("%.2f", i[0]);
               costmeal.setText(pMeal); 
        }
        }
        catch(NumberFormatException e){
            e.printStackTrace();
        }
    }   
    

    【讨论】:

    • 感谢您的回答,但它只会捕获并抛出异常,并且在我的 jTextfield costmeal 中什么也不显示
    • 基本上,如果 'costmeal' 和 'qtypizza' 中的文本不是有效数字,就会抛出异常。确保它们包含有效数字。
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多