Autor Tema: Ejercicio resuelto (CU00672B), juego de adivinar número usando clase Random  (Leído 4499 veces)

ArielDVB

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola, he escrito el código que resuelve el siguiente ejercicio
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 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.

Quisiera aclarar que es la primera vez que publico en el foro y mis dudas son las siguientes: Si el código está correcto y si es correcto que publique para consultar si un código es correcto sin tener ninguna duda concreta, puesto que su funcionamiento lo puedo probar yo mismo.
(¿Está bien el nombre del hilo?)

En fin el código es el siguiente:
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaInt{
    private Scanner scan;
    private Integer entrada = 0;
    EntradaInt(){
        scan = new Scanner(System.in);
    }
   
    public int askEntry(){
        entrada = entrada.valueOf(scan.nextLine());
        return (int)entrada;
    }
}

Código: [Seleccionar]
import java.util.Random;

public class TestJuego{
    public static void main(String [] args){
        Random numAleatorio = new Random();
        EntradaInt int_scan = new EntradaInt();
        int incognita = 0;
        int entrada;
       
        while(incognita == 0){
            incognita = numAleatorio.nextInt(100);
        }

        System.out.println("Se ha generado un número aleatorio entre 1 y 100, intente adivinarlo.");
        entrada = int_scan.askEntry();
        while(entrada != incognita){
            if(entrada > incognita){
                System.out.println("\nNo has acertado, introduce un número menor.");
                entrada = int_scan.askEntry();
            }
            else if(entrada < incognita){
                System.out.println("\nNo has acertado, introduce un número mayor.");
                entrada = int_scan.askEntry();
            }
        }
        System.out.println("\n¡Felicitaciones, has acertado!\n\nGracias por jugar, hasta pronto.");
    }
}

La razón por la que creé una clase aparte para la conversión de String a int fue para no tener que repetir código y porque puede servir para futuro, aunque no estoy seguro de si hace falta convertirlo primero al String en Integer antes de pasarlo a int.

Bien, gracias por leerme y si estás aprendiendo como yo espero que te haya sido útil. :)

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Ariel, trataré de responderte:

Si el código está correcto: más abajo te respondo

Si es correcto que publique para consultar si un código es correcto sin tener ninguna duda concreta, puesto que su funcionamiento lo puedo probar yo mismo: recomendamos publicar en los foros los ejercicios conforme se vayan realizando, de forma ordenada, con el fin de recabar revisión y orientación por parte de moderadores y usuarios. De ese modo puedes detectar si estás incurriendo en alguna mala práctica de programación y así ir corrigiéndola. No basta con que un código funcione, hay otras consideraciones sobre el código (eficiencia, buen diseño, adopción de estándares, etc.) de las que solo te podrán informar personas con más experiencia que tú. Muchas veces las personas que ayudan respondiendo en los foros son personas que han realizado el curso previamente y después de haberlo realizado colaboran ayudando a las personas que están aprendiendo.

¿Está bien el nombre del hilo? En principio sí. Recomendamos poner la descrición (incluyendo "Java" para saber de qué lenguaje trata el hilo) antes de la referencia al ejercicio. Por ejemplo Java juego de adivinar número usando clase Random Ejercicio resuelto (CU00672B) en lugar de Ejercicio resuelto (CU00672B), juego de adivinar número usando clase Random



Ahora sobre el código: en general está bien. Te comento algún detalle.

Código: [Seleccionar]
        while(incognita == 0){
            incognita = numAleatorio.nextInt(100);
        }

No es una mala idea, pero realmente no es necesario plantear un bucle while para generar un aleatorio entre 1 y 100, se puede hacer de forma directa. Recomendación: evita usar bucles cuando no sean estrictamente necesarios.

El uso de una clase para convertir de String a int tampoco es una mala idea, pero tampoco es necesario. Fíjate en el código en https://www.aprenderaprogramar.com/foros/index.php?topic=2277.0

No te preocupes ahora por hacer ejercicios perfectos, intenta ir asimilando poco a poco las cosas, ir mejorando un poquito cada día.

Saludos

 

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