Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Pasandav en 26 de Octubre 2015, 08:35

Título: Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Pasandav en 26 de Octubre 2015, 08:35
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);
    }
}
Título: Re:Solución a Clase Random y método nextInt - CU00672B
Publicado por: Pasandav 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: ");}
      }
    }
}
Título: Re:Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Alex Rodríguez en 28 de Octubre 2015, 09:45
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
Título: Re:Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Pasandav en 28 de Octubre 2015, 12:28
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: ");}
        }
    }
}
Título: Re:Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Alex Rodríguez en 28 de Octubre 2015, 12:59
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.
Título: Re:Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Pasandav en 28 de Octubre 2015, 14:44
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
Título: Re:Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Alex Rodríguez en 30 de Octubre 2015, 09:31
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
Título: Re:Ejemplo números aleatorios Java Clase Random y método nextInt - CU00672B
Publicado por: Pasandav en 30 de Octubre 2015, 16:01
Ok. Lo haré.

Muchas gracias.