Autor Tema: Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B  (Leído 4201 veces)

Pasandav

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Cuelgo el código de este ejercicio.

Espero que sea correcto.

Gracias:
Código: [Seleccionar]
import java.util.Random;
/**
 * Write a description of class AdivinaNumero here.
 *
 * @author (Pasandav)
 * @version (a version number or a date)
 */
public class AdivinaNumero
{
    public AdivinaNumero()
    { 
    }
   
    public static void main (String [] args)
    {
        Random numeroAleatorio;
        numeroAleatorio = new Random();
        EntradaDeTeclado teclado = new EntradaDeTeclado();
        int adivina = (int) numeroAleatorio.nextInt(100);
        System.out.println("ADIVINA EL ALEATORIO" + adivina);
        System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intente adivinarlo: " + adivina);
        teclado.pedirEntrada();
        int respuesta= Integer.valueOf (teclado.getEntrada());
       do {
           respuesta= Integer.valueOf (teclado.getEntrada());
           if (respuesta == adivina){ System.out.println("Vaaalgame que listo, has acertado!! ");}
           else{
                    System.out.println("Intentalo otra vez: ");
                    teclado.pedirEntrada();}
      }while (respuesta!=adivina);
    }
}
« Última modificación: 28 de Octubre 2015, 09:38 por Alex Rodríguez »

Pasandav

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Re:Solución a Clase Random y método nextInt - CU00672B
« Respuesta #1 en: 26 de Octubre 2015, 17:16 »
Modifico el código antes de que me respondais:
Le ha quitado la repetición del método  teclado.pedirEntrada y la inicialización de la variable respuesta antes del while. Creo que así está mas limpio el código.

Gracias.
Código: [Seleccionar]
import java.util.Random;
/**
 * Write a description of class AdivinaNumero here.
 *
 * @author (Pasandav)
 * @version (a version number or a date)
 */
public class AdivinaNumero
{
    public AdivinaNumero()
    { 
    }
   
    public static void main (String [] args)
    {
        Random numeroAleatorio;
        numeroAleatorio = new Random();
        EntradaDeTeclado teclado = new EntradaDeTeclado();
        int adivina = (int) numeroAleatorio.nextInt(100);
        System.out.println("ADIVINA EL ALEATORIO" + adivina);
        System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intente adivinarlo: " + adivina);
        int respuesta=0;
       while (respuesta!=adivina){
           teclado.pedirEntrada();
           respuesta= Integer.valueOf  (teclado.getEntrada());
           if (respuesta == adivina){   System.out.println("Vaaalgame que listo, has acertado!! ");}
           else{    System.out.println("Intentalo otra vez: ");}
      }
    }
}

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola deberías corregir:

El método nextInt (ver https://docs.oracle.com/javase/8/docs/api/java/util/Random.html) se define así:

public int nextInt(int bound)

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)

Tu código entonces no cumple con que el aleatorio esté entre 1 y 100, sino que está entre 0 y 99.

El enunciado del ejercicio dice:

Citar
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”

Tu código no indica cuándo el número introducido es menor o mayor, no cumple lo que pide el ejercicio.

Puedes consultar la solución viendo otro hilo como https://www.aprenderaprogramar.com/foros/index.php?topic=2277.0


Saludos

Pasandav

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Cuelgo solo el main.
Espero opinión.
Muchas gracias.
Código: [Seleccionar]
import java.util.Random;
/**
 * Write a description of class AdivinaNumero here.
 *
 * @author (Pasandav)
 * @version (a version number or a date)
 */
public class AdivinaNumero
{
    public AdivinaNumero()
    { 
    }
   
    public static void main (String [] args)
    {
        Random numeroAleatorio;
        numeroAleatorio = new Random();
        EntradaDeTeclado teclado = new EntradaDeTeclado();
       
        int adivina =  numeroAleatorio.nextInt(100)+1;
        System.out.println("ADIVINA EL ALEATORIO" + adivina);
        System.out.println("Se ha generado un número aleatorio entero entre 1 y 100, intenta adivinarlo: ");
        int respuesta=0;
        while (respuesta!=adivina){
           teclado.pedirEntrada();
           respuesta= Integer.valueOf  (teclado.getEntrada());
           
           if (respuesta >0 && respuesta<100){
               if (respuesta == adivina){   System.out.println("CORRECTO!! ");}
               else if (respuesta > adivina ){System.out.println("No has acertado, el número que buscas es menor, intentalo otra vez: ");}
               else {System.out.println("No has acertado, el número que buscas es mayor, intentalo otra vez: ");}
           }else{System.out.println("Introduce números de 1 a 100: ");}
        }
    }
}

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Me da error al compilar porque falta la clase EntradaDeTeclado, ¿puedes pegar el código? Pega siempre el código de todas las clases que intervengan, incluso si ya lo has puesto en otros hilos para no tener que estar buscando, así podemos revisar con más agilidad. Saludos.

Pasandav

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Ok. Perdona.
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

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Lo veo muy bien, el único detalle a corregir if (respuesta >0 && respuesta<=100){ poner un = para que si introducimos un 100 no nos diga que introduzcamos un número de 1 a 100 puesto que el 100 está incluido

Saludos

Pasandav

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 39
    • Ver Perfil
Ok. Lo haré.

Muchas gracias.

 

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".