Ejercicio 23 – Repetir hasta acertar el número en rango

Enunciado

Modificar el programa del Ejercicio 16 para qué no termine hasta qué el usuario introduzca un número qué esté dentro del rango aleatorio [a, b].

Si el número está fuera del rango, se mostrará un mensaje de error y se volverá a pedir otro.

Explicación del ejercicio

📌 Generación del rango aleatorio

Se generan dos valores entre 0 y 99. Después se intercambian si fuese necesario para garantizar a ≤ b.

📌 Repetición obligatoria con do-while

Se utiliza un bucle do-while, qué garantiza qué el cuerpo del bucle se ejecuta al menos una vez:

El bucle se repetirá hasta qué el número introducido entre dentro del rango.

Solución en Java


import java.util.Scanner;

public class Ejercicio23 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int a = (int)(Math.random() * 100);
        int b = (int)(Math.random() * 100);

        // Aseguramos a <= b
        if (a > b) {
            int temp = a;
            a = b;
            b = temp;
        }

        int numero;

        // Bucle para qué el número esté dentro del rango
        do {
            System.out.print("Introduce un número entero: ");
            numero = sc.nextInt();

            if (numero < a || numero > b) {
                System.out.println("Fuera de rango. Inténtalo de nuevo.");
            }

        } while (numero < a || numero > b);

        // Cuando sale del bucle, el número está dentro del rango
        System.out.println("¡Correcto! El número está dentro del rango.");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("Número introducido: " + numero);
    }
}
    

Ejemplo de ejecución


Introduce un número entero: 150
Fuera de rango. Inténtalo de nuevo.
Introduce un número entero: -5
Fuera de rango. Inténtalo de nuevo.
Introduce un número entero: 42
¡Correcto! El número está dentro del rango.
a = 12
b = 73
Número introducido: 42