Please help - Exception in thread "AWT-Eventqueue-0" java.lang.Numberformatexception

Asked

Viewed 77 times

-2

I am trying to save the total value of a sale, however the following error is being displayed :

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "199,67"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
    at java.lang.Float.parseFloat(Float.java:451)
    at view.ViewVendas.jButton2ActionPerformed(ViewVendas.java:444)

Follow the code on line 444

 int codigoVenda = 0, codigoProduto = 0;
        listaModelVendasProdutos = new ArrayList<>();

        modelVendas.setFk_cliente(Integer.parseInt(txtCodCli.getText()));

        try {
            modelVendas.setVen_dataVenda(blDatas.converterDataParaDateUS(new java.util.Date(System.currentTimeMillis())));
        } catch (Exception ex) {
            Logger.getLogger(ViewVendas.class.getName()).log(Level.SEVERE, null, ex);
        }
        float vltxt = Float.parseFloat(txtValorTotal.getText());
        modelVendas.setVen_valorTotal(vltxt);
        modelVendas.setVen_valor(Float.parseFloat(txtValorTotal.getText()) + valorDesc);
        modelVendas.setVen_desconto(valorDesc);

        codigoVenda = controllerVendas.salvarVendasController(modelVendas);
        if (codigoVenda > 0) {
            JOptionPane.showMessageDialog(this, "Venda realizada com scesso !", "SUCESSO", JOptionPane.WARNING_MESSAGE);

        } else {
            JOptionPane.showMessageDialog(this, "Erro ao realizar venda !", "ERRO", JOptionPane.ERROR_MESSAGE);
        }
        int cont = tblVenCad.getRowCount();

        for (int i = 0; i < cont; i++) {
            codigoProduto = (int) tblVenCad.getValueAt(i, 0);
            modelVendasProdutos = new ModelVendasProdutos();
            modelProduto = new ModelProdutos();
            modelVendasProdutos.setId_produto(codigoProduto);
            modelVendasProdutos.setId_venda(codigoVenda);
            modelVendasProdutos.setVen_pro_valor((double) tblVenCad.getValueAt(i, 3));
            modelVendasProdutos.setVen_pro_quantidade(Integer.parseInt(tblVenCad.getValueAt(i, 2).toString()));
            //SUBTRAIR DO ESTOQUE
            modelProduto.setId_produto(codigoProduto);
            modelProduto.setPro_estoque(controllerProduto.retornaProdutoController(codigoProduto).getPro_estoque()
                    - Integer.parseInt(tblVenCad.getValueAt(i, 2).toString()));
            listaModelVendasProdutos.add(modelVendasProdutos);
            listaModelProdutos.add(modelProduto);
        }

        if (controllerVendasProdutos.salvarVendasProdutosControllerLista(listaModelVendasProdutos)) {

            controllerProduto.alterarEstoqueProdutoController(listaModelProdutos);
            JOptionPane.showMessageDialog(this, "Registrado!", "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
            carregarVendas();
            limparFormulario();
        } else {
            JOptionPane.showMessageDialog(this, "Falaha ao criar registro de movimentação !", "ERRO", JOptionPane.ERROR_MESSAGE);
        }

1 answer

0


The exception itself already indicates what is happening: trying to convert a String to Float, but the String is not valid. The String you are trying to convert is "199.67" but Float doesn’t know ",". Switch to ".":

float vltxt = Float.parseFloat(txtValorTotal.getText().replace(",", "."));
modelVendas.setVen_valor(Float.parseFloat(txtValorTotal.getText().replace(",", ".")) + valorDesc);

In your code, I saw that you use a lot of conversions. Be careful. The ideal and perfect scenario would be to validate these String before trying to convert by applying a regex to know if it contains only numbers, for example.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.