Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 22 de Junio 2015, 12:46

Título: Java generar números enteros aleatorios ejercicio resuelto del tutorial CU00672B
Publicado por: rubens23 en 22 de Junio 2015, 12:46
Generar números aleatorios en Java. Clase Random y método nextInt.

Citar
Crea un programa Java que permita “jugar a adivinar un número” como se expone a continuación. El programa debe iniciarse indicando “Se ha generado un número aletatorio entero entre 1 y 100, intente adivinarlo”. El usuario introducirá un número y si el número aleatorio generado por el ordenador es menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es mayor”. El programa terminará cuando el usuario introduzca el número aleatorio que había escogido el ordenador


CLASE AdivinaNumero

Código: [Seleccionar]
package aprender;
import java.util.Random;
public class AdivinaNumero {
Random numAleatorio;
int n;
public AdivinaNumero(){
System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intente adivinarlo");
}
public Integer getNumero(){
numAleatorio = new Random();
n= numAleatorio.nextInt(101);
return n;
}
}



Clase Test con main

Código: [Seleccionar]
package aprender;
import javax.swing.JOptionPane;
public class TestAdivinaNumero {
public static void main (String [] args){
AdivinaNumero num = new AdivinaNumero();
String entrada = JOptionPane.showInputDialog ( "Introduzca un número entre 1 y 100:" );
int entr = Integer.valueOf(entrada);
int adv = num.getNumero();
do{
if (entr < adv){
System.out.println("No has acertado: el número aleatorio es mayor. \nPrueba otra vez ");
entrada = JOptionPane.showInputDialog ( "Introduzca un número entre 1 y 100:" );
entr = Integer.valueOf(entrada);
}
if (entr >adv){
System.out.println("No has acertado: el número aleatorio es menor. \nPrueba otra vez ");
entrada = JOptionPane.showInputDialog ( "Introduzca un número entre 1 y 100:" );
entr = Integer.valueOf(entrada);
}
}while ( entr != adv);
System.out.println("Has acertado el numero. \nGracias por jugar");
}
}
Título: Re:Entrega nº72 del curso "Aprender programación Java desde cero"CU00672B
Publicado por: javi in the sky en 23 de Junio 2015, 17:41
Hola rubens23! El programa funciona bien. Como consejos de mejora tendriamos los siguientes:

No introducir un System.out.println dentro de un constructor. El constructor se usa para inicializar los campos de la clase.

El bucle do que has planteado se ejecuta siempre al menos una vez, puedes simplificarlo poniendo la condición al principio de modo que si se adivinó el número no se entre al bucle, de esta manera

Código: [Seleccionar]
while ( entr != adv){
if (entr < adv){
System.out.println("No has acertado: el número aleatorio es mayor. \nPrueba otra vez ");
entrada = JOptionPane.showInputDialog ( "Introduzca un número entre 1 y 100:" );
entr = Integer.valueOf(entrada);
}
if (entr >adv){
System.out.println("No has acertado: el número aleatorio es menor. \nPrueba otra vez ");
entrada = JOptionPane.showInputDialog ( "Introduzca un número entre 1 y 100:" );
entr = Integer.valueOf(entrada);
}
}

También me parece que si utilizas ventanas deberías mostrar todos los mensajes usando ventanas, no mezclar la ventana con la consola porque no se sabe muy bien dónde hay que mirar.

Saludos cordiales  :D