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

else if desobediente

Estas en el tema de else if desobediente en el foro de Java en Foros del Web. Hola a todos. Estaba haciendo una pequeña aplicacion para consola que emula un alcoholimetro, y llegado a un punto, tras sacar la tasa de alcohol ...
  #1 (permalink)  
Antiguo 29/10/2011, 05:49
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
else if desobediente

Hola a todos.

Estaba haciendo una pequeña aplicacion para consola que emula un alcoholimetro, y llegado a un punto, tras sacar la tasa de alcohol en sangre segun los datos introducidos por el usuario, queria configurar un mensaje que depende del valor de este numero.

Si es 0, dar la enhorabuena, si esta entre 0 y 0,50 recomendar algo, si es mas de 0,50 indicarle que no debe conducir, si supera 1,5 decirle que lleva un buen pedo, si es mayor de 3,5 que esta rozando el coma... cosas por el estilo. Algo sencillo.

Para ello, estoy utilizando un if con elseif, del siguiente modo:

Código java:
Ver original
  1. //contrase con la normativa española
  2.  
  3.  if (alcoholSangre  > maxPermitidoConducir){
  4.             System.out.println("No debes conducir, superas la tasa maxima de alcoholemia");
  5.        
  6.         }else if (alcoholSangre > 1){
  7.             System.out.println("No conduzcas. No vayas en bici. Hidratate con agua. Mañana será un dia duro");
  8.         }else if (alcoholSangre == 3){
  9.             System.out.println("Si eres tu el que escribe, estas rozando el coma etilico.\nDeja de beber.");
  10.         }else if (alcoholSangre > 4){
  11.             System.out.println("El mundo no tiene bastante floreros para darte de beber, y lo sabes.");
  12.        
  13.         //Puede conducir:
  14.         }else{
  15.             System.out.println("Eres una persona responsable. Puedes conducir");
  16.         }

El problema es que se queda siempre en
(if) No debes conducir, superas la tasa maxima...
o
(else) Eres una persona respondable. Puedes conducir...

No haciendo caso de los elseif.

Es esto por que estoy haciendo comparaciones demasiado ambiguas? ¿hay algun modo de concretar mensajes segun rangos numericos?

Muchas gracias.
  #2 (permalink)  
Antiguo 29/10/2011, 08:09
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: else if desobediente

Es cuestión de que pongas bien los if. No sé qué valor tiene maxPermitidoConducir, pero el siguiente if (alcoholSangre > 1) va a impedir que entres nunca en los demás. Si es < 1 se ira por el else y NUNCA entrará en ==3 o >4 ya que sólo entra por ahí si es <1.

Pon los if ... elseif ... de mayor número a menor

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 29/10/2011, 10:38
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: else if desobediente

Muchas gracias, chuidiang. No sabia que habia que estructurar un if de mayor a menor. Esto es algo que hasta ahora no habia leido y claro, ahora me hace sentir un poco tonto con el problema que tenia, jeje.

maxPermitidoConducir tenia un valor de 0.50.

Al final el codigo me ha quedado asi:

Código java:
Ver original
  1. if (alcoholSangre > 4)
  2.             System.out.println("El mundo no tiene bastante floreros para darte de beber, y lo sabes.");
  3.         else if (alcoholSangre == 3)
  4.             System.out.println("Si eres tu el que escribe, estas rozando el coma etilico.\nDeja de beber.");
  5.         else if (alcoholSangre > 1)
  6.             System.out.println("No conduzcas. No vayas en bici. Hidratate con agua. Mañana será un dia duro");
  7.         else if (alcoholSangre  > maxPermitidoConducir)
  8.             System.out.println("No debes conducir, superas la tasa maxima de alcoholemia");
  9.         if (alcoholSangre  < maxPermitidoConducir)
  10.             System.out.println("Enhorabuen. Eres un person responsble, puedes conducir.");
Y funciona. No se si deberia haber usado el parametro else en lugar de agregar otro if, pero el caso es funciona.

Te debo una :)
  #4 (permalink)  
Antiguo 29/10/2011, 12:55
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: else if desobediente

Personalmente si la tasa está entre 3 y 4 se iría por la ruta else if (alcoholSangre > 1). En todo caso usaría > para la tasa mínima y >= para el resto de tasas :D
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 30/10/2011, 03:59
c0c
 
Fecha de Ingreso: octubre-2004
Mensajes: 38
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: else if desobediente

Si, tienes razon. El codigo que he puesto no es exactamente el que estoy usando, si no que puse unos cuantos valores al tun tun para ver "que pasaba" segun los distintos datos.

Ahora que ya me funciona, he modificado los valores para que entre otras cosas, no hayan esas lagunas.

Muchas gracias :)

Etiquetas: aplicaciones
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 04:46.