首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决java.lang.NumberFormatException:用于输入字符串:"396.00“

问如何解决java.lang.NumberFormatException:用于输入字符串:"396.00“
EN

Stack Overflow用户
提问于 2021-11-25 05:32:15
回答 2查看 420关注 0票数 0

我用java做了一个小应用程序。我想在mysql database.Now中插入供应商支付,问题是当我尝试用总支付减去总余额并输入balance列时。因此,对于输入字符串:“396.00”java.lang.NumberFormatException:,它给出了类似于的错误。那我怎么解决呢

代码语言:javascript
复制
if(jCheckBox1.isSelected())
{
    String bx="Insert into supplierpaymenttable(Supplier_ID,SupplierInvoice_ID,User_ID,InvoiceNo,TotalAmount,PaymentAmount,RemainingBalance) VALUES (?,?,?,?,?,?,?)";
      
    PreparedStatement pay=conn.prepareStatement(bx);
    int k=Integer.parseInt(jTextField5.getText());
    int cx=k-k;
                
    pay.setString(1,String.valueOf(supplier));
    pay.setString(2,String.valueOf(det));
    pay.setString(3,"1");
    pay.setString(4, String.valueOf(invoie));
    pay.setInt(5, Integer.valueOf(jTextField5.getText()));
    pay.setInt(6, Integer.valueOf(jTextField5.getText()));
         
    pay.setInt(7,Integer.valueOf(cx));
    int rsdets= pay.executeUpdate();
}
EN

回答 2

Stack Overflow用户

发布于 2021-11-25 05:59:00

就像延斯提到的。您正在尝试将双/浮点值强制转换为int。所以取决于你想做什么。

如果您接受小数点,那么最好将DB模式更改为接受小数点并使用Double.valueOf(cx).

如果您只接受整数,则必须解析输入并截断或舍入小数点。(int) Math.round(Double.valueOf(cx))

代码语言:javascript
复制
- Some people multiply the amount by 100 to include cents as a way to bypass dealing with doubles

编辑:你能张贴堆栈跟踪吗?仔细观察代码,cx已经是一个整数,并且您正在执行什么都不做的Integer.valueOf(cx)。另外,cx不是一直都是0吗,因为您在做k-k?您确定这些ID是字符串值吗?那部分在我看来很奇怪。

票数 0
EN

Stack Overflow用户

发布于 2021-11-25 06:53:18

396.00是一个双值而不是int值。因此,您必须将其解析为双倍:

代码语言:javascript
复制
Double.valueOf(cx).intValue() 

因此,您的代码看起来是:

代码语言:javascript
复制
if(jCheckBox1.isSelected())
      {
          String bx="Insert into supplierpaymenttable(Supplier_ID,SupplierInvoice_ID,User_ID,InvoiceNo,TotalAmount,PaymentAmount,RemainingBalance) VALUES (?,?,?,?,?,?,?)";
          
        
  
           PreparedStatement pay=conn.prepareStatement(bx);
             int k=Double.valueOf(jTextField5.getText()).intValue();
               int cx=k-k;
        

       pay.setString(1,String.valueOf(supplier));
       pay.setString(2,String.valueOf(det));
       pay.setString(3,"1");
       pay.setString(4, String.valueOf(invoie));
       pay.setInt(5, Integer.valueOf(jTextField5.getText()));
       pay.setInt(6, Integer.valueOf(jTextField5.getText()));
     
       pay.setInt(7,Double.valueOf(cx).intValue());
         int rsdets= pay.executeUpdate();
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70106215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档