2
respuestas

[Sugerencia] Sugerencia actividad 3: Adivinar el numero random

En la actividad de la clase 3. Controlando el flujo de la aplicación. Realice la actividad y surgía un pequeño error, sucedía lo mismo con la solución del instructor.

Funciona perfecto, el problema es el ultimo if que decide que cuando intentos == 5, da el mensaje "No adivinaste, el número era " + numeroRandom". Qué pasa si adivinamos el numero en los 5 intentos, va a suceder que aparecerán los dos if, el de felicitación y el de arriba también por lo que es raro que diga algo como "Felicidades no adivinaste" es un ejemplo.

Por lo que si no se va a mostrar el numero de intentos que se realizo creo que lo mejor es reducir intentos en 1 para que no suceda esto.

if (numeroUsuario == numeroRandom) {
                System.out.println("¡Lo lograste el adivinaste el número!");
                int i = intentos--;
                break;

En el primer if se reduce intentos, para que quede en 4. Si hay alguna forma para que esto sea mejor y se muestre los intentos en que se realizo, no reduciendo el número de intentos, pueden ayudarme con eso? Gracias

2 respuestas

¡Hola Duvan, espero que estés bien!

Entiendo tu preocupación con el funcionamiento del último if en la actividad de la clase 3. Controlando el flujo de la aplicación. Parece que estás buscando una forma de mostrar el número de intentos que se realizaron sin reducir el número de intentos.

Una forma de lograr esto es simplemente imprimir el número de intentos al final del bucle, justo antes de mostrar el mensaje de "No adivinaste". De esta manera, el mensaje mostrará el número de intentos realizados independientemente de si se adivinó el número o no.

Aquí tienes un ejemplo de cómo podrías modificar el código para lograr esto:

if (numeroUsuario == numeroRandom) {
    System.out.println("¡Lo lograste el adivinaste el número!");
    break;
} else {
    System.out.println("No adivinaste, el número era " + numeroRandom);
    System.out.println("Intentos realizados: " + intentos);
}

De esta forma, el mensaje "No adivinaste" siempre mostrará el número de intentos realizados, y no será necesario reducir el número de intentos.

Espero que esta sugerencia te sea de ayuda. ¡Buena suerte con tu aplicación!

Espero haber ayudado y buenos estudios!

En realidad la solucion se puede encarar de diferentes maneras, el unico problemas es cuando adivinas en el utimo intento, creo que la mejor manera de manejar ese problemas es utilizar una bandera para al final del codigo mostrar el mensaje correspondiente por ejemplo:

        Scanner scanner = new Scanner(System.in);

        // definimos un numero random entre 1 y 10
        int number = (int) (Math.random() * 10 + 1);
        // Decimos que el jugador por el momento no ha adivinado el numero
        boolean hasGuessed = false;
        // definimos el maximo de intentos
        int maxAttempts = 5;

        System.out.println("Adivina el numero entre 1 y 10");

        // ciclo para los intentos
        for (int i = 0; i < maxAttempts; i++) {
            System.out.println("Intento " + (i + 1) + " de " + maxAttempts);
            System.out.println("Ingresa un numero: ");
            int guess = scanner.nextInt();
            // si el numero es igual al numero random
            if (guess == number) {
                System.out.println("Felicidades, has adivinado el numero! en el intento " + (i + 1));
                hasGuessed = true;
                break;
            } else {
                if(i < maxAttempts - 1){
                    System.out.println("Numero incorrecto, intenta de nuevo");
                }
            }
        }

        // si el jugador no adivino el numero
        if (!hasGuessed) {
            System.out.println("Lo siento, no has adivinado el numero. El numero era: " + number);
        }

Esta es una manera de encarar ese problema, hay muchas formas de simplificar mas este codigo, pero tiene en cuenta la mayoria de las cosas que puedan suceder, para mejorarlo podriamos hacer que valide si el usuario ingrese solo numeros sin necesidad de adelantarnos tanto