Java - Problema con string

 
Vista:
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Hector (63 intervenciones) el 07/01/2020 01:15:46
Hola amigos del foro he aquí tratando de aprender un poco más tengo un problema que cuando saco un resultado me manda un error, pero antes de eso les muestro el código que estoy utilizando.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public void existe1() {
    String a = txtprecio.getText();
    String b = txtvalor.getText();
    double val = Double.parseDouble(a);
    double val1 = Double.parseDouble(b);
    double division = val / val1;
    DecimalFormat df = new DecimalFormat("####0.00");
    String resultado_1 = String.format("%.2f", (division));
    String resultado_2 = df.format(division);
    txtequivalente.setText(resultado_2);
 
    String c = txtprecio1.getText();
    String d = txtvalor.getText();
    double val2 = Double.parseDouble(c);
    double val3 = Double.parseDouble(d);
    double division1 = val2 / val3;
    DecimalFormat df1 = new DecimalFormat("####0.00");
    String resultado_3 = String.format("%.2f", (division));
    String resultado_4 = df1.format(division1);
    txtequivalente1.setText(resultado_4);
 
    String e = txtequivalente.getText(); // 15.67
    String f = txtminimo1.getText(); // 301.0
    if (e.equals(f) || (Double.parseDouble(e) > Double.parseDouble(f))) {
        Double val4 = Double.parseDouble(txtprecio.getText());
        Double val5 = Double.parseDouble(txtfactor1.getText());
        Long val6 = Math.round(val4 * val5) / 100;
        txthonorarios1.setText(val6.toString());
        txtgastos1.requestFocus();
    } else {
        Double val4 = Double.parseDouble(txtprecio.getText());
        Double val5 = Double.parseDouble(txtfactor.getText());
        Long val6 = Math.round(val4 * val5) / 100;
        txthonorarios.setText(val6.toString());
        txtgastos.requestFocus();
    }
}
y ahora el error que me muestra:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "14,57"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at Archivos_Renta.Frmhonorarios.existe1(Frmhonorarios.java:126)
at Archivos_Renta.Frmhonorarios.lambda$existe$2(Frmhonorarios.java:93)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at Archivos_Renta.Frmhonorarios.existe(Frmhonorarios.java:91)
at Archivos_Renta.Frmhonorarios.txtfechaActionPerformed(Frmhonorarios.java:621)
at Archivos_Renta.Frmhonorarios.access$100(Frmhonorarios.java:28)
at Archivos_Renta.Frmhonorarios$2.actionPerformed(Frmhonorarios.java:356)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:508)
at javax.swing.JTextField.postActionEvent(JTextField.java:721)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:836)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1668)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2882)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2929)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2845)
at java.awt.Component.processEvent(Component.java:6316)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:835)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1103)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:974)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:800)
at java.awt.Component.dispatchEventImpl(Component.java:4760)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

no se en que estoy fallando porque las anteriores pantallas no me mandaba este error, estoy parado hace varios días, con esto y no que hacer, debe haber algo malo que estoy declarando, el problema se sucita en el del txtequivalente , ojala que me puedan echar una ayuda con esto y desde ya muchas gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Franklin (179 intervenciones) el 07/01/2020 13:54:54
Que tal compañero, intenta usar Double,valueOf(String); en vez de Double.parseDouble(String)...
Adicionalmente si gustas antes de hacer la conversión valida que el String no sea Null para que evites el NullPointerException
asu vez solo restringir el uso de caracteres para evitar otro error al parsearlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Hector (63 intervenciones) el 09/01/2020 01:43:41
Franklin quiero darte las gracias por tu ayuda y los consejos que me diste para solucionar este problema pero no pude, hice lo que me aconsejaste pero sigo con el error, así que opte para que el usuario haga un paso más y así saltarme el paso de tomar la desición.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Kabuto (1381 intervenciones) el 07/01/2020 14:01:27
Atento a la línea de error:
1
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "14,57"

El error está en que se ha introducido el número usando una "coma decimal". Pero Java por defecto solo acepta "punto decimal" para parsear a Double.

Es decir, has de teclear "14.57" en lugar de "14,57".

Es posible que luego al mostrar el valor en pantalla, sí te lo muestre con una "coma decimal". Esto depende un poco de la "localización" (región, idioma...) que detecte Java para el sistema actual.

Pero la entrada de datos, hazla con "punto decimal"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Hector (63 intervenciones) el 09/01/2020 01:44:25
Kabuto quiero darte las gracias por tu ayuda y los consejos que me diste para solucionar este problema pero no pude, hice lo que me aconsejaste pero sigo con el error, así que opte para que el usuario haga un paso más y así saltarme el paso de tomar la decisión, ahora lo hice de otra manera Kabuto pero me manda el error a la public void existe liea 126, la cual ya borre, no existe la existe1() y me muestra el resultado de "14,57", en la cual ya no lo hace el sistema, a que se debe esto, ya estoy mareado con tanta advertencia., favor de ayudarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo
Val: 17
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Leonardo (4 intervenciones) el 08/01/2020 09:54:03
Kabuto está en lo cierto, el problema lo tienes en la coma que usas como separador decimal.

Prueba lo siguiente:

1
2
double val = Double.parseDouble(a.Replace(",", "."));
double val1 = Double.parseDouble(b.Replace(",", "."));


Espero haber sido de utilidad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Hector (63 intervenciones) el 09/01/2020 01:44:57
Leonardo quiero darte las gracias por tu ayuda y los consejos que me diste para solucionar este problema pero no pude, hice lo que me aconsejaste pero sigo con el error, así que opte para que el usuario haga un paso más y así saltarme el paso de tomar la desición.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 106
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Hector (63 intervenciones) el 09/01/2020 02:01:46
ahora lo hice de otra manera Leonardo pero me manda el error a la public void existe linea 126, la cual ya borre, no existe la existe1() y me muestra el resultado de "14,57", en la cual ya no lo hace el sistema, a que se debe esto, ya estoy mareado con tanta advertencia., favor de ayudarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo
Val: 17
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Problema con string

Publicado por Leonardo (4 intervenciones) el 09/01/2020 10:03:39
Crea un nuevo proyecto con la siguiente línea de código y ejecútalo paso-a-paso:

1
double test = Double.parseDouble("14.25");


A ver que sucede.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar