Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: jupertivo en 23 de Abril 2015, 18:57

Título: Juego adivinar número Java Ejercicio Generar números aleatorios (CU00672B)
Publicado por: jupertivo en 23 de Abril 2015, 18:57
Hola a tod@s. Aquí os dejo mi resolución del ejercicio propuesto. Acepto mejoras, críticas, etc. Estamos para aprender ;D.


Clase AdivinarUnNumero, con el 'main':

Código: [Seleccionar]
public class AdivinarUnNumero{
    public static void main(String[]Args){
        Integer miInteger=0;
        boolean continuar=false;
        EntradaDeTeclado entrada; //Creo un objeto 'EntradaDeTeclado'
        NumeroAleatorio numero=new NumeroAleatorio(); //Creo un objeto 'Numeroaleatorio'
        numero.generarNumeroAleatorio(); //Genero un numero aleatorio
        System.out.println("\nEmpieza el programa. Para salir en cualquier momento, pulse 'Return'");
        System.out.print("Se ha generado un número entero aleatorio entre 1 y 100, ambos incluidos. Intente adivinarlo: ");
        entrada=new EntradaDeTeclado(); //Pido datos por teclado
        continuar=entrada.getContinuar(); //Compruebo si se ha pulsado 'Return'
        while(continuar){ //Si no se ha pulsado 'Return', entro
            miInteger=miInteger.valueOf(entrada.getEntrada()); //El valor del 'String' de entrada, se convierte en objeto tipo Integer
            if((int)miInteger==numero.getNumeroAleatorio()){
                System.out.println("\n¡Enhorabuena!. Ha acertado.");
                continuar=false;} //Se ha acertado, por lo que el programa finaliza
            else if((int)miInteger<numero.getNumeroAleatorio()){   
                System.out.print("No ha acertado. El número introducido es menor que el buscado. Intente adivinarlo introduciendo otro: ");}
            else if((int)miInteger>numero.getNumeroAleatorio()){   
                System.out.print("No ha acertado. El número introducido es mayor que el buscado. Intente adivinarlo introduciendo otro: ");}   
            if(continuar){ //Evita que se entre si se ha acertado
                entrada=new EntradaDeTeclado(); //Pido datos por teclado
                continuar=entrada.getContinuar();}} //Compruebo si se ha pulsado 'Return'               
        System.out.println("\nFin del programa");}}


Clase Numeroaleatorio;

Código: [Seleccionar]
import java.util.Random;
public class NumeroAleatorio{//Esta clase genera un entero aleatoriamente entre 1 y 100
    int numeroAleatorio=0;
    public NumeroAleatorio(){numeroAleatorio=0;} //Constructor
    public void generarNumeroAleatorio(){
        Random num=new Random();
        while(numeroAleatorio==0){ //Evito que me genere el cero
            numeroAleatorio=num.nextInt(101);}}
    public int getNumeroAleatorio(){return numeroAleatorio;} }


Clase EntradaDeTeclado:

Código: [Seleccionar]
import java.util.Scanner;
public class EntradaDeTeclado{
    private String entradaTeclado;
    boolean continuar=true;
    public EntradaDeTeclado(){ //Constructor
        entradaTeclado="";
        pedirEntrada();} //Al crear un objeto, se ejecuta este método
    public void pedirEntrada(){
        Scanner entradaEscaner=new Scanner(System.in);
        entradaTeclado=entradaEscaner.nextLine();
        if (entradaTeclado.length()==0) {continuar=false;}} //Si pulso 'Return', finalizará el programa
    public boolean getContinuar(){return continuar;}
    public String getEntrada(){return entradaTeclado;}}


Saludos a todos los foreros. :)

Título: Re:Juego adivinar número Java Ejercicio Generar números aleatorios (CU00672B)
Publicado por: Dan_SB en 24 de Abril 2015, 19:50
Veo que has hecho una versión mejorada.... yo lo veo perfecto!!!

 :D
Título: Re:Juego adivinar número Java Ejercicio Generar números aleatorios (CU00672B)
Publicado por: César Krall en 24 de Abril 2015, 20:52
Yo también, además está bien acostumbrarse a trabajar con distintas clases como en este caso NumeroAleatorio, EntradaDeTeclado, etc.

Saludos!!
Título: Re:Juego adivinar número Java Ejercicio Generar números aleatorios (CU00672B)
Publicado por: jupertivo en 24 de Abril 2015, 21:41
Hola de nuevo. Gracias por vuestros comentarios. Me abrumáis y, encima, por partida doble. Un lujazo!!!  :D
Lo de mejorada, no sé. Adapté lo que estaba en la lección dada por el curso. Gracias.
Sí, intento hacerlo con clases distintas, para llamarlas después desde la clase 'main'. Creo que es la filosofía de Java. Además, se pueden reutilizar para otros programas. Por ejemplo, la clase entradaDeTeclado la utilizo siempre como entrada.

Gracias de nuevo. Sois fantásticos por vuestra atención, comentarios y por la calidad del curso. De verdad. Hasta el siguiente post.
Título: Re:Juego adivinar número Java Ejercicio Generar números aleatorios (CU00672B)
Publicado por: Dan_SB en 27 de Abril 2015, 05:09
Esa filosofía la he adquirido yo... a mis inicios todo lo escribía en el main.. como prueba puedes verte este post mio anterior (cuando recién vine aquí):

https://www.aprenderaprogramar.com/foros/index.php?topic=2090.msg10282#msg10282

Compara ahora ese codigo con esto (aun le falta una mejora que dentro de poco voy a publicar por cierto..!  ;) ):

https://www.aprenderaprogramar.com/foros/index.php?topic=2286.msg10955#msg10955


Saludos!