【问题标题】:java.lang.NumberFormatException For Input String value is lettersjava.lang.NumberFormatException For Input String value is letters
【发布时间】:2017-03-03 02:30:10
【问题描述】:

这是代码,当我输入一个字母时,它不会显示 .matches 行,而是出现错误,但如果我删除 parseFloat rec1 并删除 else if (rec1

CashType c = new CashType(); c.setVisible(true);

    c.jButton1.addActionListener(new java.awt.event.ActionListener() {

        public void actionPerformed(java.awt.event.ActionEvent evt) {
         String receive = c.jTextField1.getText();


         float total = total("sellno"+SellNoCount.getText());
         float rec1 = Float.parseFloat(receive); //this is line 1525

            if(!receive.matches("[0-9]+")){
                JOptionPane.showMessageDialog(null,"Enter a Valid Amount");
                c.jTextField1.setText("");

            }

            else if(receive.equalsIgnoreCase("")){
                JOptionPane.showMessageDialog(null,"Enter Amount");
            }
            else if(rec1 < total){

              JOptionPane.showMessageDialog(null,"Insufficient Amount");

            }

//错误

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "asdasd"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at projectfinal.SellPage$32.actionPerformed(SellPage.java:1525)

【问题讨论】:

  • 您需要在尝试解析之前检查它是否匹配。
  • 而且你需要在检查它是否匹配之前检查它是否为空。
  • 在解析值if(!receive.matches("[0-9]+"))之前检查这个条件。

标签: java jframe jtextfield


【解决方案1】:

从错误消息看来,您正在向 jTextField1 输入“asdasd”。您尝试解析为浮动的此值。如果字符串不是数字,Float.parseFloat(string) 将抛出 NumberFormatException。在parseFloat() 方法中,字符串参数将被转换为原始浮点值。

您可以检查输入的值是否为数字,然后将其解析为浮点数。

float rec1 = 0;

   if(isNumeric(receive)){
       rec1 = Float.parseFloat(receive);
       if(rec1 < total){

         JOptionPane.showMessageDialog(null,"Insufficient Amount");

       }
   }else {
          JOptionPane.showMessageDialog(null,"Enter a Valid Amount");
            c.jTextField1.setText("");
         }

方法是

 public static boolean isNumeric(String s) {  
    return s.matches("[-+]?\\d*\\.?\\d+");  
} 

【讨论】:

  • 嘿,谢谢你,它帮助我解决了我的问题,但是运行后会出现一个小问题,如果我输入一个字母,它会显示 Enter a Valid Amount 按确定后会弹出 Insufficient Amount up还怎么解决呢?我很抱歉这些问题,但我仍在学习 Java,再次提前谢谢你
  • 试试修改后的代码。这是因为 if(rec1
  • 嘿,终于成功了,但我忘记了最后一行之后还有其他内容,但我已经解决了:D 非常感谢您的帮助
猜你喜欢
  • 2016-05-26
  • 2021-03-21
  • 1970-01-01
  • 2020-05-27
  • 2019-07-18
  • 2022-01-16
  • 1970-01-01
  • 2020-04-26
  • 2020-11-06
相关资源
最近更新 更多