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