Esta pregunta es bastante novato, pero la verdad estoy llevando tiempo viendo por que no funciona.
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:
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.
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)
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 '.
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
Mientras que 1 <= n < 100
int numero = entrada.nextInt();
while(numero > 0 && numero < 100){
numero = entrada.nextInt();
}