2016-10-19 6 views
0

Мой код:NumberFormatException при анализе строки в 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

меня включить эту функцию в мой код: частных статических BigDecimal синтаксического анализа (String ул) { String, нормализуется = «»; if (str == null) { normalized = "0"; } else { normalized = str.replaceAll ("\\ s", "") .replace (',', '.'); } вернуть новый BigDecimal (нормализованный); – Squero27

+0

Не используйте комментарии, ** редактируйте ** свой вопрос. И опубликуйте stacktrace с полным сообщением об исключении. –

ответ

1

Ваш метод parsing выбросит это исключение, если str пустая строка ("") или пробел (" "). Вы, возможно, потребуется сделать некоторые дополнительные проверки, например,

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

После редактирования кода с вашим ответом он работает отлично, но когда я хочу вставить данные в базу данных, я получил это сообщение: Исключение из потока thread-0 java.lang.arrayindexoutofboundsexception: 10 – Squero27

+0

Наконец, он работает хорошо, у меня есть забыли имя столбца по запросу, спасибо @Gord Thompson к вашей помощи – Squero27