Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Sugerencia] La Solucion del instructor tiene una falla

En el caso de que se adivine el número generado en el quinto intento, al ingresar en el while por quinta vez (i = 4) primero se incrementa el valor del contador (o sea i ahora = 5) y despues se compara, el valor ingresado es igual al valor generado, imprime el mensaje de acierto e interrumpe el ciclo while con el break, pero pasa a comparar para el mensaje (el cual se encuentra despues del lazo while) de si los intentos fueron los permitidos que en el caso de que el acierto fue en el quinto, es true, por lo que imprime tambien el mensaje de "Lo siento, no conseguiste adivinar el número en 5 intentos. El número era " + numeroGenerado.

una posible solucion a este problema seria poner el siguiente bloque

    if (intentos == 5) {
        System.out.println("Lo siento, no conseguiste adivinar el número en 5 intentos. El número era " + numeroGenerado);
        break;
    }
    

dentro del lazo while antes de cerrarlo, o bien hacer el incremento de intentos antes de salir del lazo while y no antes de los if.

Les muestro la consola del caso planteado.

"C:\Program Files\Java\jdk-17\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1\lib\idea_rt.jar=62486:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\Alure curso Oracle\Cursos Programacion\05 Entender Java y Orientacion a Objetos\03 Controlando el flujo de la aplicacion\creando primera aplicacion\out\production\primerprograma" Desafio Introduzca un número entre 0 e 100: 50 El número que escribiste es mayor al número generado. Introduzca un número entre 0 e 100: 20 El número que escribiste es menor al número generado. Introduzca un número entre 0 e 100: 40 El número que escribiste es menor al número generado. Introduzca un número entre 0 e 100: 45 El número que escribiste es menor al número generado. Introduzca un número entre 0 e 100: 49 Felicidades, adivinaste el número en 5 intentos! Lo siento, no conseguiste adivinar el número en 5 intentos. El número era 49

Process finished with exit code 0

Saludos

Federico

2 respuestas

¡Hola Federico!

Entiendo tu problema. Parece que el mensaje de "Lo siento, no conseguiste adivinar el número en 5 intentos. El número era " + numeroGenerado se está imprimiendo incluso cuando el usuario adivina en el quinto intento. Una posible solución sería mover el bloque de código que imprime este mensaje dentro del bucle while, de modo que se ejecute solo si el usuario no adivina el número en 5 intentos.

Aquí te dejo un ejemplo de cómo podrías modificar el código:

int intentos = 0;
while (intentos < 5) {
    // Resto del código para comparar el número ingresado con el número generado
    if (numeroIngresado == numeroGenerado) {
        System.out.println("¡Felicidades! Adivinaste el número.");
        break;
    }
    // Resto del código para dar pistas al usuario
    intentos++;
}
if (intentos == 5) {
    System.out.println("Lo siento, no conseguiste adivinar el número en 5 intentos. El número era " + numeroGenerado);
}

Espero que esta solución te sea de ayuda. ¡Buena suerte con tu juego de adivinanzas!

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!
solución!

Hola Luis, si esa era una de las dos posibles soluciones que propuse para este bug.

Gracias por tu pronta respuesta y Cordiales Saludos