Dos condiciones en estructura do-while

Iniciado por ryan parker, 2 Junio 2013, 06:45 AM

0 Miembros y 1 Visitante están viendo este tema.

ryan parker

Esta pregunta es bastante novato, pero la verdad estoy llevando tiempo viendo por que no funciona.
Código (java) [Seleccionar]
do{
   numero = ingresa.nextInt();
}while(numero == 0 && numero > 100000)


La idea es ingresar un numero que este entre: 1<= n <100.
Y que sume naturalmente segun el numero ingresado.

Entrada:
2
5

Salida:
3
15

Pero si ingresas 0, es resultado es: 0.
Si ingresas 101, sale el resultado.
Cosa que debe  de seguir pidiendome leer numero.

Por ejemplo si hago asi:
Código (java) [Seleccionar]
do{
do{
numero = ingreso.nextInt();
}while(numero == 0);
}while(numero > 10000);


Hace correctamente, pero mi pregunta es por que no puedo hacerlo solo en un while?

Saludos.
Your kung-fu is not strong!

Kenkox

#1
No funciona porque la condicion de numero == 0 && numero >100 nunca va a ser verdadera y por tanto solo entra una vez .... ¿Porque?... porque supongamos numero == 0 .... la primera condicion es verdadera, pero la segunda es falsa... por lo tanto  TRUE && FALSE = FALSE

Ahora supongamos numero > 100 .... la primera condicion es falsa, y la segunda verdadera... por lo tanto FALSE && TRUE = false... por lo tanto solo entrara una vez y parara el ciclo.....

Si quieres que solo se ingrese un numero  1 <= n < 100

entonces tu codigo tendria que ser

while( numero> 0 && numero < 100 ){
balbalñaba
}

Supongamos que numero es igual a 1

1>0 && 1 < 100 .... TRUE && TRUE = TRUE

ahora n = 99
99> 0 && 99 < 100 TRUE && TRUE = TRUE

ahora n = 100

100 > 0 && 100 < 100 TRUE && FALSE = FALSE

por lo tanto cume que  1<=n<100

No sé bien como este tu codigo, pero creo que deberias de usar un while en lugar de un do while..... tienes que notar que el while primero evalua y despues realiza... el do while, primero hace y despues evalua.. hay una gran diferencia...

Suerte (y)

ryan parker

Gracias por responder amigo, estado probando, lamentablemente seguia dando saltos inesperados,  yasi que estuve  razonando la logica que acabas de publicar. Recordando algo de logica proposicional, lo que mejor se ajustaba a este enunciado fue la logica proposicional de ' O inclusiva '.

Código (java) [Seleccionar]
int numero = entrada.nextInt();
  while(numero <= 0 || numero > 100){
     numero = entrada.nextInt();
}


Funciona adecuadamente.  :laugh:
Pero mis jueces dicen que esto da lugar a un error de en tiempo de ejecucion (runtime error)   :-(

Cosa que sigo revisando.
Saludos
Your kung-fu is not strong!

YairMon

Mientras que 1 <= n < 100

Código (java) [Seleccionar]
int numero = entrada.nextInt();
while(numero > 0 && numero < 100){
     numero = entrada.nextInt();
}