Tenho uma aplicação que cadastra valores em banco de dados, o método q conecta ao banco possui o argumento valor do tipo Double, esse valor o usuario insere num textfield, bom usei o Double.parseDouble e chega a compilar, mas qd executo dá um erro e nao armazena o valor no banco, o erro é esse: java.lang.NumberFormatException: For input string: “33.000,00”
Já tentei usar o DecimalFormat, mas nao deu jeito, bom quero um jeito de cadastrar esse valor no banco no formato ###.###.###,## por exemplo! Alguém poderia me ajudar??? Agradeço!
http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html
No COBOL, tínhamos isso:
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
que burlava erros como esses.
Até!
De uma olhada na classe NumberFormat: http://java.sun.com/j2se/1.5.0/docs/api/java/text/NumberFormat.html em especial ao metodo : getCurrencyInstance(Locale inLocale)
Não sei se te ajuda. Vejamos;
GRAVANDO NO BD:
- Utilizando um JTextField;
- Verificar se o número digitado é um double válido;
- Montar double (tirar máscara e deixar com apenas decimal - substituir vírgula por ponto);
- Enviar double para o BD.
BUSCANDO DO BD:
- busca valor;
- formata valor com a máscara definida;
- seta no JTextfield valor montado com a máscara.
Pense um pouco nisso (desculpe se não é isso).
Abraços.
Cara, sinceramente achei mais complicado do que aplicar um local a aplicação ( o Locale que o nosso colega disse ). Problemas de localização e internacionalização já foram contemplados e os mais comuns, resolvidos. O link que passei anteriormente já explica como fazer isso de uma maneira bem completa. Caso queira ( e precise ) ler mais sobre outros assuntos que envolvem local, moeda, horario, data etc, procure por internationalization (i18n) ou localization (l10n).
Até!
To aprendendo tbm a formatar números, datas, etc. Valeu maquiavel.