entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cambiar puntos por coma JAVA

Buenas compañeros, estoy intentando realizar una función para poder transformar datos recogidos, como por ejemplo: 2.1 en 2,1

String DNI = txtDNI.getText();
        String Descuento = txtDto.getText();
        String valor[] = new String[3];
        for (int fila = 0; fila < tbl.getRowCount(); fila++) {
            for (int columnas = 0; columnas < tbl.getColumnCount(); columnas++) {
                // Introduzco los valores recogidos en el vector
                valor[columnas] = tbl.getValueAt(fila, columnas).toString();
            }
            // Formateamos el valor, en vez punto (.) hay comas (,)
            DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(getLocale());
            otherSymbols.setDecimalSeparator(',');
            DecimalFormat df = new DecimalFormat("###,###.##", otherSymbols);
            String format = df.format(valor[2]);
            String format2 = df.format(Descuento);
            System.out.println("Valor sin formatear");
            System.out.println("Cantidad: " + valor[0] + "' || '" + "Descripcion: " + valor[1] + "' || '"
                    + "Precio: " + valor[2] + "' || '" + " Descuento: " + Descuento);
            System.out.println("-------------------------------------");
            System.out.println("Valor formateado");
            System.out.println("Cantidad: " + valor[0] + "' || '" + "Descripcion: " + valor[1] + "' || '"
                    + "Precio: " + format + "' || '" + "" + " Descuento: " + format2);
            // objConex.AñadirVenta(valor, formateador.format(ValorComa),

        }
        txtDNI.setText("");
        txtNombre.setText("");

Se supone según la API que funciona así...String format = df.format(valor[2]); pero donde pone "valor[2]" que es donde recojo el valor de la columna "Precio" en mi jtable (esto funciona perfectamente). Mas luego, intento, recogiendo el valor del txtDto (Descuento), donde obtengo 5, que lo quiero como 5.0 porque el descuento puede no ser un número entero, y aquí, como también lo tengo que registrar en la BD, me pide que lo ponga como 5,0.

¿Que se os ocurre? Gracias :)

1 Respuesta

3votos

cobasESP Puntos19650

Yo lo haria asi:

String numeroRecogido = txtDTo.getText();

String numeroNuevo = numeroRecogido.replaceAll(".", ",");

//Aqui arriba recojo el valor y reemplazo todos los puntos de su cadena por comas.

float numDecimal = float.parseFloat(numeroNuevo); //parseo el numero con coma a float que ya no da error

Son 3 lineas simples espero que te funcione.

1voto

Yesod comentado

En vez replaceAll(".", ","); hay que usar replace. Por lo demás, funciona perfectamente :)

Mil gracias :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta