Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: dferna en 05 de Abril 2017, 20:31

Título: Java. Clase Random y alguno de sus métodos System.currentTimeMillis CU00672B
Publicado por: dferna en 05 de Abril 2017, 20:31
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

Código: [Seleccionar]
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.

Código: [Seleccionar]
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.

Código: [Seleccionar]
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.

Código: [Seleccionar]
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  ;)
Título: Re:Resolución ejercicio Adivinar número CU00672B
Publicado por: pedro,, en 08 de Abril 2017, 18:27
Hola dferna.

El ejercicio está bien resuelto, solo comentarte que la clase que llamas Utilidades sería más adecuado un nombre que describa el propósito de esta clase, por ejemplo EntradaDeTeclado o algo que haga referencia a ello.

Te dejo un enlace donde se habla sobre como dar nombres adecuados a las calses.

https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

Saludos. ;D