es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Juego básico de adivinanza HiLow en Java

Soy un traductor español que traduce documentos de TI. Traduzca lo siguiente al español. No traducir el código y el resultado en markdown

Soy plenamente consciente de que esta pregunta se ha realizado muchas veces, es un problema clásico del primer año en CSC. No estoy buscando la solución al problema en sí mismo. Creo que lo tengo básicamente hecho, sin embargo, me falta algo que no puedo encontrar cómo hacer.

Aquí está mi código:

“`java
import java.util.Scanner;
import java.util.Random;

public class HiLow
{
public static void main (String[] args)
{
Random generator = new Random();
Scanner scan = new Scanner(System.in);
int num1,guess;
int count = 0;
num1 = generator.nextInt(100) + 1;
while(true) {
System.out.print(“Enter an integer between 1 or 100 or enter 0 at anytime to quit: “);
guess = scan.nextInt();
count++;
if(guess == num1 || guess == 0) {
if(guess == 0) {
System.out.println(“Thanks for playing”);
break;
}
System.out.println(“Congrats you’ve guessed correct and your total guesses is ” + count );
break;
}
else if (guess > 100 || guess < 1) {
System.out.print(“I see you cannot follow instructions. I said “);
count–;
}
else if (guess > num1) {
System.out.println(“You have guessed too high. “);
}
else {
System.out.println(“You have guessed too low.”);
}
}
}
}

Mi problema es que se me requiere solicitar al usuario en el punto de “si el usuario abandona o adivina correctamente el número, solicitar al usuario para ver si desea jugar de nuevo”. Estoy perdido y no seguro de cómo continuar mi ciclo while desde el principio después de mis interrupciones. ¿Existe una forma de finalizar la condición de interrupción que tengo desde (guess == num1 || guess ==0) y dirigir mi programa para que comience de nuevo en la declaración while(true)?

Gracias

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de lograr esto. En lugar de usar declaraciones break para salir del bucle, puedes usar una variable booleana para controlar cuándo salir del bucle. Aquí hay un ejemplo de cómo puedes modificar tu código para lograr esto:

    import java.util.Scanner;
    import java.util.Random;
    
    public class HiLow {
        public static void main (String[] args) {
            Random generator = new Random();
            Scanner scan = new Scanner(System.in);
            int num1, guess;
            int count = 0;
            boolean playAgain = true;  // Usa una variable booleana para controlar el bucle
    
            while (playAgain) {
                num1 = generator.nextInt(100) + 1;
                count = 0;
                while (true) {
                    System.out.print("Ingresa un número entero entre 1 y 100 o ingresa 0 en cualquier momento para salir: ");
                    guess = scan.nextInt();
                    count++;
                    if (guess == num1 || guess == 0) {
                        if (guess == 0) {
                            System.out.println("Gracias por jugar");
                        } else {
                            System.out.println("Felicidades, adivinaste correctamente y el total de tus intentos es " + count);
                        }
                        break;  // Sal del bucle interno
                    } else if (guess > 100 || guess < 1) {
                        System.out.println("Veo que no puedes seguir las instrucciones. Dije entre 1 y 100.");
                        count--;
                    } else if (guess > num1) {
                        System.out.println("Adivinaste demasiado alto.");
                    } else {
                        System.out.println("Adivinaste demasiado bajo.");
                    }
                }
                // Pregunta si el usuario quiere jugar de nuevo
                System.out.print("¿Quieres jugar de nuevo? (s/n): ");
                String playAgainInput = scan.next();
                if (!playAgainInput.equalsIgnoreCase("s")) {
                    playAgain = false;  // Establece la variable booleana en false para salir del bucle externo
                }
            }
        }
    }
    

    En este código modificado, el bucle externo está controlado por la variable booleana playAgain. El bucle interno aún contiene la lógica del juego de adivinanza, pero en lugar de usar declaraciones break para salir del bucle, simplemente permitimos que termine naturalmente. Después del bucle interno, preguntamos si el usuario quiere jugar de nuevo y establecemos la variable playAgain según su respuesta. Si el usuario no quiere jugar de nuevo, establecemos playAgain en false para salir del bucle externo y finalizar el programa.

Comments are closed.