public void gravaVenda(){
DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
DAOVenda dao = df.getDAOVenda();
String dadosVenda[][] = new String[telaVenda.getRows()][telaVenda.getCell()];
dadosVenda = telaVenda.getDadosJTable();
int tam = telaVenda.getRows();
int i = 0;
String guarda = null ;
float preco ;
while (i<tam){
Venda v = new Venda();
String tipo = dadosVenda[i][0];
String descricao = dadosVenda[i][1];
String codigoVenda = txtCodigo.getText();
String totalVenda = txtTotalVenda.getText();
/*Ele está dando erro aqui na hora de a variável preco pegar o totalVenda e tranformar
* para um float... tá dando NumberFormatException :(
* Mas não sei por que??? Eu estava pegando o valor que estava em meu array dadosCompra, onde estava o
* valor da mercadoria sem desconto... ae depois que coloquei o desconto ele funfa legal.. calcula tudo no desconto
* só que quando fui mandar ele pegar o preço final da venda que estava em uma txt ele começou a dar esse erro */
preco = Float.parseFloat(totalVenda);
totalVenda = String.valueOf(preco);
ftxtData = new JFormattedTextField(new Date());
DateFormatter fmt = (DateFormatter)ftxtData.getFormatter();
fmt.setFormat(new SimpleDateFormat("dd/MM/yyyy"));
String data = data =String.valueOf(ftxtData.getValue());
String nomeCliente=null;
DAOFactory df2=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
DAOCliente dao2 = df2.getDAOCliente();
Cliente cliente = new Cliente();
cliente = TelaTableClientesVenda.getCliente();
nomeCliente = cliente.getNome();
if (tam>1){
boolean descontoMarcado = getEstadoDesconto();
if (descontoMarcado){
String desc = (String) cmbDesconto.getSelectedItem();
float desconto = Float.parseFloat(desc);
desconto = calculaDescontoIndividual(desconto);
guarda = (String) jTable.getValueAt(i, 3);
String precoI = guarda;
float pegaPreco = Float.parseFloat(precoI);
preco = pegaPreco - desconto;
totalVenda = String.valueOf(preco);
DecimalFormat aproximador = new DecimalFormat( " 0.00 " );
}
/*
* Ver depois para não deixar mais de duas casas decimais!!!
* Tá prontooooooooooo!!
*/
}
v.setTipo(tipo);
v.setDescricao(descricao);
v.setCodigoVenda(codigoVenda);
v.setTotalVenda(totalVenda);
v.setNomeCliente(nomeCliente);
v.setData(data);
dao.cadastrar(v);
i++;
}
}
String para float?
7 Respostas
Em uma pesquisa rápida no Google encontrei o seguinte código, vê se ajuda:String x = "R$ 1.500,00";
NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale( "pt", "BR" ));
Float y = new Float( nf.parse( x ).floatValue() );parece exatamente o que você quer, já ajeita o formato do número direitinho inclusive…
Os número que está colocando é algo como “9,99” ou “9.99”?
Dê uma olhada na classe NumberFormat aplicando um Locale “pt”, “BR”. No javadoc dele e de DecimalFormat tem alguns exemplos.
Olá amigos!!!
Testei o código acima amigo mas o erro persiste… agora mudou o nome mas persiste… hehehehe
Mas achu que o erro é o que o amigo Buno Laturner disse…
Ele está pegando o valor no formato 9,90 e não no formato 9.90
AE tá dando problema…
o que os amigos acham que devo fazer??
acho que poderia trocar as virgulas por pontos por exemplo
double a = Double.parseDouble(minhaString.replaceAll(",", "."));
Amigo vc esta tendo problemas de conversão
formatos entre a linguagem e o banco…
procure por formatacao
string para float
e vice versa
tem muita coisa no google
acho que poderia trocar as virgulas por pontos por exemplo
double a = Double.parseDouble(minhaString.replaceAll(",", "."));
Vamos supor que esteja usando uma máscara chamado valorFormatado com o seguinte formato ("#,##0.00")
double a = valorFormatado.parse(suaString).doubleValue();
Não esqueça de colocar essa lógica dentro de um trycatch pegando ParseException
Abraços!!
Talvez nem precise tanto, tenta utilizar em vez do Parse o método Float.Valueof(String s);
deve funcionar.