Foros del Web » Programación para mayores de 30 ;) » Java »

problema con la coma

Estas en el tema de problema con la coma en el foro de Java en Foros del Web. estoy creando un programa en el cual toma valores decimales o enteros de un campo de texto y los multiplico o divido sea el caso ...
  #1 (permalink)  
Antiguo 12/07/2013, 13:42
 
Fecha de Ingreso: julio-2013
Ubicación: temuco, chile
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
problema con la coma

estoy creando un programa en el cual toma valores decimales o enteros de un campo de texto y los multiplico o divido sea el caso

el punto es que al momento de que el usuario ingresa una coma como separador decimal se cae

solo con un punto funciona


así q seria bueno encontrar una forma de validar eso

se me comento que capturando el key podría cambar la coma por un punto pero mis conocimientos son mas bien básicos
intente con esto pero no funciona

DecimalFormat formateador = new DecimalFormat("########.##");
DecimalFormat DECIMAL = new DecimalFormat("########.#");
DecimalFormat total = new DecimalFormat("########");
DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
simbolos.setDecimalSeparator('.');
DecimalFormat formateador2 = new DecimalFormat("####.####",simbolos);
  #2 (permalink)  
Antiguo 12/07/2013, 15:41
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 17 años, 10 meses
Puntos: 454
Respuesta: problema con la coma

Hola:

Lo más fácil es que hagas algo como esto, reemplazando la coma por punto.

String valor = jtextfield.getText().replace(",",".");

Si el usuario no escribe coma sino punto, eso no reemplaza nada y si escribe coma, la reemplaza por punto. A partir de ahí conviertas valor a Float o Double, como hacías antes.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 13/07/2013, 00:17
 
Fecha de Ingreso: julio-2013
Ubicación: temuco, chile
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: problema con la coma

grx por responder

me sirvio me soluciono el problema

pero creo que me creo otro jajajxd


mi código es el siguiente
distancia=Double.parseDouble(txtlargo.getText().re place(",","."))/Double.parseDouble(txttrocha.getText().replace("," ,"."))*Double.parseDouble(txtancho.getText().repla ce(",","."));
convertir=distancia/1000;

lbdistancia.setText(String.valueOf(formateador.for mat(convertir)));
tiempo=convertir/Double.parseDouble(txtvelocidad.getText().replace( ",","."));
lbtiempo.setText(String.valueOf(DECIMAL.format(tie mpo)));
minutos=tiempo*60;
minutoss=(int)Math.floor(minutos);

lbminutos.setText(String.valueOf(formateador.forma t(minutoss)));
obrero=tiempo*Double.parseDouble(txtvalorhombre.ge tText().replace(",","."));

lbobrero.setText(String.valueOf(total.format(obrer o)));
litros=tiempo/Double.parseDouble(txtautonomia.getText().replace( ",","."));

lbtotallitro.setText(String.valueOf(DECIMAL.format (litros)));
totalbencina=litros*Double.parseDouble(txtpreciobe ncina.getText().replace(",","."));

lbtotalbencina.setText(String.valueOf(total.format (totalbencina)));
costototal=obrero+totalbencina;
lbcosto.setText(String.valueOf(total.format(costot otal)));
preciopublico=costototal+costototal*Double.parseDo uble(txtporcentaje.getText().replace(",","."))/100;

lbpublico.setText(String.valueOf(total.format(prec iopublico)));




pero por alguna razon me muestra mal la primera operación ademas que me agrega un punto cuando no es necesario
s

les agrade seria que me dieran una mejor manera de realizar las operaciones matemáticas



muchas grx de antemano y necesita mas información la coloco

Última edición por jorgevillegas; 13/07/2013 a las 00:24
  #4 (permalink)  
Antiguo 13/07/2013, 02:39
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 17 años, 10 meses
Puntos: 454
Respuesta: problema con la coma

"me muestra mal la primera operación ademas que me agrega un punto cuando no es necesario " ... estaría güay que dijeras exactamente qué te está saliendo y qué esperas que te salga.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 13/07/2013, 21:47
 
Fecha de Ingreso: julio-2013
Ubicación: temuco, chile
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: problema con la coma

mira cuando ejecuto la primera operación que es

distancia=Double.parseDouble(txtlargo.getText().re place(",","."))/Double.parseDouble(txttrocha.getText().replace("," ,"."))*Double.parseDouble(txtancho.getText().re pla ce(",","."));
convertir=distancia/1000;


me retorna un valor sin decimales por ejemplo

txtlargo=10
txttrocha = 2
txtancho = 50

seria (10/2*50)/1000

el resultado deberia de ser 0.25
pero me muestra en pantalla solo el cero


ese el problemita xd
  #6 (permalink)  
Antiguo 13/07/2013, 22:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 17 años, 10 meses
Puntos: 454
Respuesta: problema con la coma

Hola:

Si divides enteros, el resultado es entero y no salen decimales. Si guardas el resultado en un entero, sale un entero, es decir, sin decimales.

(10/2*50)/1000 sale 0
pero
(10.0/2.0*50.0)/1000.0 sí saldría 0.25

En tu caso, puesto que usas cosas como Double.parseDouble(txtlargo.getText().re place(",",".")), imagino que tu problema es que has declarado distancia como int en vez de double.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: coma, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:09.