2016-08-12 7 views
0

Я пытаюсь преобразовать денежную ценность String, которая разделена запятой. Первоначально он имеет знак валюты. В этом случае знак Песо.Невозможно разобрать количество строк, разделенных запятыми. Первоначально с символом валюты

enter image description here

Что я сделал, чтобы удалить Песо знак первым и получить значение из столбца 2 JTable который дал мне String значение "212,312.00" Однако, когда я попытался использовать Double.valueOf("212,312.00") или Double.parseDouble("212,312.00") он возвратил ошибку NumberFormatException ,

java.text.ParseException: Unparseable number: " 212,312.00" 

Это мой код:

for (int x = 0; x < feesJtbl.getRowCount(); x++) { 
    String valueWithPesosSign = ((String) myModel.getValueAt(x, 1)); 
    String stringAmount = valueWithPesosSign.replaceAll("\\P{Print}", ""); 
    //JOptionPane.showMessageDialog(null, stringAmount); 
    doubleAmount = Double.parseDouble(stringAmount); 
    totalOfTuition += doubleAmount; 
} 

Любое предложение? Я попробовал два разных способа разбора, но похоже, что запятая является тем, что вызывает исключение.

ответ

0

Вам может понадобиться использовать java.text.NumberFormat

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
Number number = format.parse("212,312.00"); 
double d = number.doubleValue(); 

Примечание: Это работает только если текущая локаль по умолчанию происходит использовать запятую в качестве десятичного разделителя. В некоторых локалях запятая используется как разделитель тысяч, и в этом случае «212,312.00» будет анализироваться до 212312.00 вместо того, чтобы бросать ошибку.

Или вы можете использовать replaceAll и удалить из номера запятую (,) и разобрать цифры.

+0

Для меня, 'метод replaceAll' работает лучше всего. –

0

Я понял, что мне просто нужно добавить еще .replaceAll() как .replaceAll(",",""); чтобы избавиться от запятой. Не получить какую-либо ошибку исключения с разбором после добавления другого replaceAll()

for (int x = 0; x < feesJtbl.getRowCount(); x++) { 
    String valueWithPesosSign = ((String) myModel.getValueAt(x, 1)); 
    String stringAmount = valueWithPesosSign.replaceAll("\\P{Print}", "").replaceAll(",",""); 

    doubleAmount = Double.parseDouble(stringAmount); 
    totalOfTuition += doubleAmount; 
}