Я получаю значения из jTable и помещаю их в свою базу данных (MySQL). В моей таблице БД есть двойной столбец PAYMENT. Когда я пытаюсь поместить значения из моего jTable, возникает проблема:
String payment=(String) jTable1.getValueAt(row, 2);
double pay=double .parseDouble (payment);
........
pst.setDouble(3, zar);
Я получаю это исключение:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "84,21834324"
Как я могу поместить этот столбец из jTable как двойной в моей таблице БД? P.S.: Я тоже пробовал с поплавком.
Да, и я предполагаю, что он ожидает точку.
@SirFartALot Абсолютно ничего с этим постом.
Что такое «зар» в высказывании pst.setDouble(3, zar); ? Это какая-то другая строка или двойное значение




Замените , на .:
String payment = (String) jTable1.getValueAt(row, 2);
double pay = Double.parseDouble(payment.replace(",". "."));
........
pst.setDouble(3, zar);
Изменить. Если вы хотите поддерживать более сложные значения:
import java.util.Locale;
import java.text.*;
class Main {
public static void main(String[] args) throws ParseException {
String v1 = "84,21834324";
String v2 = "1.234.567,89";
NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);
Number n1 = format.parse(v1);
Number n2 = format.parse(v2);
double d1 = n1.doubleValue();
double d2 = n2.doubleValue();
}
}
Поднял отредактированное решение из этого вопроса
На самом деле это работает в моем случае. У меня только один разделитель.
@SirFartALot, какое двойное значение вы ожидаете от 1.234.567,89?
dblStr = "1.234.567,89"; DecimalFormat.getInstance(Язык.НЕМЕЦКИЙ).parse(dblStr) --> 1234567.89d DecimalFormat.getInstance(Язык.США).parse(dblStr) --> 1.234d
Вы знаете, что виновником является
,, верно?