将String解析为BigDecimal时的NumberFormatException

时间:2016-10-19 10:39:08

标签: java bigdecimal

我的代码是:

String sql="insert into L_EC(AMOUNT)values(?)";

    pst=con.prepareStatement(sql);


   for(int i=0;i<dtm.getRowCount();i++){
     BigDecimal nbr= parsing(dtm.getValueAt(i, 1).toString());
     prst.setBigDecimal(1, nbr);
     prst.addBatch();
}
prst.executeBatch();

信息: 列的类型为Currency

private static BigDecimal parsing(String str) {
    String normalized="";
    if(str==null){
       normalized="0";
    }else{
     normalized = str.replaceAll("\\s", "").replace(',', '.');
    }
    return new BigDecimal(normalized);

问题是当表中的单元格包含NULL时,我收到此消息:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException
    at java.math.BigDecimal.<init>(BigDecimal.java:545)
    at java.math.BigDecimal.<init>(BigDecimal.java:739)
    at Vista.TCRCG.parse(TCRCG.java:130)

我认为当解析器找到没有任何文本或值的单元格时,问题在于解析方法。

1 个答案:

答案 0 :(得分:1)

如果parsing为空字符串(str)或空格(""),则" "方法会抛出该异常。您可能需要进行一些额外的检查,例如

if (str == null || str.trim().length() == 0) {
    normalized = "0";