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
-
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':
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;
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:
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. :)
-
Veo que has hecho una versión mejorada.... yo lo veo perfecto!!!
:D
-
Yo también, además está bien acostumbrarse a trabajar con distintas clases como en este caso NumeroAleatorio, EntradaDeTeclado, etc.
Saludos!!
-
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.
-
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!