Buenas
Aquí expongo mi solución al ejercicio de "Adivinar número" de la entrega CU00672B del curso elemental de programación Java con IDE BlueJ.
Esta es la clase principal con el main
package aplicacion;
import utilidades.Utilidades;
import aleatorio.NumeroAleatorio;
public class AdivinarNumero {
public static void main(String[] args) {
Utilidades utilidades = new Utilidades();
NumeroAleatorio nAleatorio = new NumeroAleatorio();
int numeroIntroducido = 0;
int nAleatorioGenerado = 0;
nAleatorioGenerado = nAleatorio.generarNumeroAleatorio();
System.out.println("Se ha generado un número aleatorio entre 1 y 100, intente adivinarlo.");
numeroIntroducido = utilidades.pideNumero();
while (numeroIntroducido != nAleatorioGenerado) {
if (nAleatorioGenerado < numeroIntroducido) {
System.out.println("No has acertado: el número es menor. Prueba otra vez.");
} else if (nAleatorioGenerado > numeroIntroducido) {
System.out.println("No has acertado: el número es mayor. Prueba otra vez.");
}
numeroIntroducido = utilidades.pideNumero();
}
System.out.println("Enhorabuena has acertado el número secreto.");
}
}
Esta clase contiene solo un método que genera el numero aleatorio en el rango especificado. Utilizo "System.currentTimeMillis()" para que cada vez que me genere el número aleatorio la semilla sea diferente.
package aleatorio;
import java.util.Random;
public class NumeroAleatorio {
public NumeroAleatorio(){
}
public int generarNumeroAleatorio(){
Random numAleatorio = new Random(System.currentTimeMillis());
//Generar número aleatorio int entre 1 y 100
int intNumeroAleatorio = 1+numAleatorio.nextInt(100);
return intNumeroAleatorio;
}
}
Y por último he desacoplado un poco mas el código sacando a otra clase de otro paquete los métodos de pedida de datos.
package utilidades;
import java.util.Scanner;
public class Utilidades {
public int pideNumero() {
Scanner sc = new Scanner(System.in);
int entradaTeclado = sc.nextInt();
return entradaTeclado;
}
public String pideCadena() {
Scanner sc = new Scanner(System.in);
String entradaTeclado = sc.nextLine();
return entradaTeclado;
}
}
Aquí dejo una salida por pantalla de una prueba.
Se ha generado un número aleatorio entre 1 y 100, intente adivinarlo.
30
No has acertado: el número es mayor. Prueba otra vez.
70
No has acertado: el número es menor. Prueba otra vez.
40
No has acertado: el número es menor. Prueba otra vez.
35
No has acertado: el número es menor. Prueba otra vez.
33
No has acertado: el número es menor. Prueba otra vez.
32
No has acertado: el número es menor. Prueba otra vez.
31
Enhorabuena has acertado el número secreto.
Saludos