Java - Limitar decimales en un Jtextfield

 
Vista:
Imágen de perfil de Julián

Limitar decimales en un Jtextfield

Publicado por Julián (10 intervenciones) el 24/07/2022 04:03:01

Buen día a todos




Hoy tengo una duda sobre cómo utilizar un resultado de un text field para realizar otro cálculo, por ejemplo:

Tengo A + B = C

Y para otro cálculo necesito utilizar la C del resultado anterior para calcular C * D = F

Pero he intentado con setText y el código presenta error y no he podido avanzar desde esta parte, entonces quiero saber si hay algún otro código que sirva para este pequeño inconveniente.

1
double NumSaBF=Double.parseDouble(CampoSaBFOculto.-acá está el problema, no sé qué poner-());

No repito o no pongo (A+B)*D = F porque son ecuaciones algo complejas y tienen condicionales, entonces necesito utilizar directamente este resultado de C para llegar al otro resultado.

De antemano agradezco a quien se tome la molestia de ayudarme con esto.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Limitar decimales en un Jtextfield

Publicado por Kabuto (1381 intervenciones) el 24/07/2022 23:23:58
No me queda muy claro donde está el problema.

Si el resultado C está en un JTextField, la única forma de recuperarlo es con getText() para luego parsearlo a double o lo que se necesite.

¿Qué dice el error que se presenta?
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
Imágen de perfil de Julián

Limitar decimales en un Jtextfield

Publicado por Julián (10 intervenciones) el 24/07/2022 23:39:25
Cómo es este proceso para recuperarlo con getText? y luego parsearlo a double?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
double NumImp=Double.parseDouble(CampoImp.getText());
        double NumSaBF=Double.parseDouble(CampoSaBFOculto.getText());
 
 
 
        double RAm1=Double.parseDouble(jComboBox3.getSelectedItem()+"");
 
        if(RAm1==1){
            CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.35)*(NumImp/1.5))));
        } else{
            if(RAm1==2){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.5)*(NumImp/1.5))));
        } else{
            if(RAm1==3){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.6)*(NumImp/1.5))));
        } else{
            if(RAm1==4){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.7)*(NumImp/1.5))));
        } else{
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.8)*(NumImp/1.5))));
            }
        }

Este es el código que tengo para esta parte, pero no me funciona, como tal no corre el proyecto con este código, cuando lo quito todo vuelve a correr como si nada, entonces me pierdo totalmente en esto.
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

Limitar decimales en un Jtextfield

Publicado por Kabuto (1381 intervenciones) el 25/07/2022 11:48:26
Sin ver el resto del código es difícil de decir. Conocer el mensaje de error que te pueda estar lanzando también ayudaría.

Sin embargo, esta línea me llama la atención:
1
double RAm1=Double.parseDouble(jComboBox3.getSelectedItem()+"");

Los ComboBox son un poco puñeteros, el ítem seleccionado te lo devuelven instanciado como Object, aunque originalmente sea un String o cualquier otra clase.

No se si eso que haces de concatenarle una cadena vacía, puede ser suficiente para que de Object pase a ser String y ya poder convertirlo a double.
Yo lo haría llamando al método toString():
1
double RAm1=Double.parseDouble(jComboBox3.getSelectedItem().toString());

Por otro lado, veo que luego este dato lo usas para comparar con valores enteros
1
2
3
4
5
6
7
8
double RAm1=Double.parseDouble(jComboBox3.getSelectedItem()+"");
 
        if(RAm1==1){
            CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.35)*(NumImp/1.5))));
        } else{
            if(RAm1==2){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.5)*(NumImp/1.5))));
        } else{

Siendo así, yo preferiría parsearlo a Integer, no a Double
1
int RAm1=Integer.parseInt(jComboBox3.getSelectedItem().toString());

Pero bueno, no se si el problema te viene por ahí. Lo he comentado porque es lo único que me ha chirriado un poco, lo de concatenar una cadena a un Object para transformarlo a String. Quizás funcione, pero nunca lo he hecho así.

Por lo demás parece estar correcto, pero claro, el problema puede venir por otro lado.
¿El elemento CampoSaBFOculto está bien declarado e instanciado como JTextField?

Insisto en que si te está apareciendo algún mensaje de error al ejecutar, es la mejor pista para saber qué está fallando.
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 Julián

Limitar decimales en un Jtextfield

Publicado por Julián (10 intervenciones) el 25/07/2022 16:35:47
El error dice esto

Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Uncompilable code - illegal start of expression
at ProyectoJF.<clinit>(ProyectoJF.java:493)


Lo intenté con el .toString pero me arroja el mismo error, entonces no sé qué pasa, Diosssssssss.

No los comparo con valores enteros, en esta parte me refiero a si en la caja de opciones o ComboBox, se selecciona la opción 1, 2 o 3 pues haga el respectivo cálculo, ya lo había manejado así para otros cálculos en otro proyecto y me funcionó así, entonces no entiendo qué pasa con este código que ya me tiene varios días pensando en cuál es el error.

Y es double porque para estos resultados necesito varios decimales, ya que son significativos para estos cálculos, por ende pues estoy manejando sólo double.

Sin embargo voy a intentar realizar el cálculo desde un JTextField, donde me toque reescribir el resultado para ver si probablemente el error sea en esta parte del código
1
double NumSaBF=Double.parseDouble(CampoSaBFOculto.getText());
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 Julián

Limitar decimales en un Jtextfield

Publicado por Julián (10 intervenciones) el 25/07/2022 16:52:47
Ya me funcionó, al final era cambiar una que otra cosa y me faltaba un par de estos }

Me quedó así

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
double NumImp=Double.parseDouble(CampoImp.getText());
        double NumSaBF=Double.parseDouble(CampoSaBFOculto.getText());
 
 
 
        double R1Amortiguacion=jComboBox3.getSelectedIndex();
 
        if(R1Amortiguacion==1){
            CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.35)*(NumImp/1.5))));
        } else{
            if(R1Amortiguacion==2){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.5)*(NumImp/1.5))));
        } else{
            if(R1Amortiguacion==3){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.6)*(NumImp/1.5))));
        } else{
            if(R1Amortiguacion==4){
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.7)*(NumImp/1.5))));
        } else{
                CampoSaAD.setText(String.format("%.5f",((NumSaBF/1.8)*(NumImp/1.5))));
            }
        }
            }
        }
    }

Esto es de mirar casi con lupa, muchas gracias por tu ayuda.
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

Limitar decimales en un Jtextfield

Publicado por Enrique (1 intervención) el 07/08/2022 03:41:55
Bueno yo utilizo el siguiente código para utilizarlo en un jtextfield:

private void importetotal() {
double total=0;
double precio;
double cantidad;
precio=Double.parseDouble(txtpreciov.getText());
cantidad=Double.parseDouble(txtcantidad.getText());

total = precio*cantidad;
txtimporte.setText(String.format("%.2f", total));
}
espero que te sirva
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