Autor Tema: Random nextInt Java desde Cero Generar números aleatorios enteros mayor CU00672B  (Leído 5053 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Dejo el Ejercicio CU00672B del curso básico de aprendizaje de programación orientada a objetos. Generar números aleatorios en Java. Clase Random y método nextInt. Ejercicio ejemplo resuelto.

Citar
EJERCICIO

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 aleatorio 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. Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.

Clase EntradaDeTeclado
Código: [Seleccionar]
import java.util.Scanner; //Importación de la clase Scanner desde la biblioteca Java

public class EntradaDeTeclado {  // Definimos la clase EntradaDeTeclado aprenderaprogramar.com
   private String entradaTeclado; //Variable de instancia (campo) del método
 
    //Constructor
    public EntradaDeTeclado ()  {
        entradaTeclado="";
       } //Cierre del constructor
 
    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();
    } //Cierre del método pedirEntrada

    public String getEntrada () {

        return entradaTeclado;

 } //Cierre del método getEntrada

} //Cierre de la clase

Clase TestPseudoAleatorios

 
Código: [Seleccionar]
/// Programa Test de obtención de números pseudoaleatorios aprenderaprogramar.com
public class TestPseudoAleatorios {
    public static void main (String [ ] Args) {
        boolean salir ;
        Integer tmpAdivinar,tmpEntrada  ;
        NumeroAleatorio numeroAdivinar = new NumeroAleatorio ();
        tmpAdivinar = numeroAdivinar.getNumeroAleatorio();
        String msg="";
         System.out.print ("Por favor introduzca el número a Adivinar ");
         EntradaDeTeclado entrada = new EntradaDeTeclado();
         entrada.pedirEntrada();
           
        do {
           
            tmpEntrada=Integer.parseInt(entrada.getEntrada());
            salir=tmpEntrada.equals(tmpAdivinar);
           
            if (tmpEntrada>tmpAdivinar){msg="El numero que ha introducido es mayor que el numero a adivinar\n";}
            if (tmpEntrada<tmpAdivinar){msg="El numero que ha introducido es menor que el numero a adivinar\n";}
           
            if (salir){
                System.out.print('\u000C');//Borrar pantalla por gentileza de Cesar Krall moderador de aprenderaprogramar.com
                System.out.print("!!!!!!! NUMERO ACERTADO !!!!!!!!!!!!\nNumero introducido :"+
                tmpEntrada+ "\nNumero a adivinar :"+tmpAdivinar+"\n");
            }
            else{
                System.out.print('\u000C');//Borrar pantalla por gentileza de Cesar Krall moderador de aprenderaprogramar.com
                System.out.print("NO LO HA ACERTADO. VUELVA A INTENTARLO\n"+msg);
                System.out.print ("Por favor introduzca el número a Adivinar ");
                entrada.pedirEntrada();
            }
             
        } while(!salir); //Cierre do while

        System.out.println ("Gracias por utilizar el programa");
    }
}   //Cierre del main y de la clase

Clase NumeroAleatorio

Código: [Seleccionar]
import java.util.Random;
public class NumeroAleatorio {
    private int numeroAleatorio;

    //Constructor
    public  NumeroAleatorio () {
          Random numAleato=new Random();
         numeroAleatorio=numAleato.nextInt(100)+1 ;// ¿Para que sea 1 el numero menor y 99+1 = 100 el mayor? ¿?
           } //Cierre del constructor
   
    public void NumeroAleatorio(){
         
    }

    public int getNumeroAleatorio(){return numeroAleatorio;}
} //Cierre de la clase

Gracias.
Un saludo. ;)
« Última modificación: 02 de Agosto 2019, 22:44 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, para quien revise este ejercicio, en general todo bien. Comento un par de cosas:

En la clase NumeroAleatorio hay una línea comentada

numeroAleatorio=numAleato.nextInt(100)+1 ;// ¿Para que sea 1 el numero menor y 99+1 = 100 el mayor? ¿?

Efectivamente, si consultamos el api Java podremos ver:

nextInt(int bound)
Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.

Por tanto nextInt(100) genera un número entero aleatorio entre 0 (incluido) y 100 (excluído), por tanto entre 0 y 99. Al sumarle 1, lo que tenemos es que se obtendrá un número aleatorio entre 1 y 100.

Otro detalle: si se quiere evitar el parseInt tmpEntrada=Integer.parseInt(entrada.getEntrada()); que aparece en la clase test, puede usarse
entradaTeclado = entradaEscaner.nextInt (); en lugar de entradaTeclado = entradaEscaner.nextLine ();

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".