Autor Tema: Generación de números aleatorios enteros Java. Rangos. Clase RandomCU00908C  (Leído 2509 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Hola a todos !! Dejo el código del ejercicio propuesto en la clase CU00908C del tutorial de programación Java avanzado en pdf. Desde ya muchas gracias. Un saludo,
Luis

EJERCICIO

Crea un programa que cumpla lo indicado a continuación. El programa permitirá jugar a “adivinar un número entero” tantas veces como el usuario desee. En cada ocasión el programa pedirá al usuario el número inicial y el número final de la serie de números entre los que se encontrará el número a adivinar. También preguntará el número de intentos permitidos. En cada intento el número a adivinar será diferente y estará dentro del rango definido por el usuario.

Trás los intentos el programa nos dirá cuantas veces hemos acertado y cuántas veces hemos fallado, los números que eran solución y nos preguntará si queremos volver a jugar.

Citar
Ejemplo de ejecución:

Introduce el numero inicial del rango: 40
Introduce el numero final del rango: 60
Introduce el numero de intentos: 2
¿Qué numero estoy pensando? : 44
No has acertado
¿Qué numero estoy pensando? : 42
No has acertado
Has acertado 0 veces y has fallado 2 veces. Eran solución: 49, 41
Quieres probar otra vez ? (S/N): S
Introduce el numero inicial del rango: 4
Introduce el numero final del rango: 6
Introduce el numero de intentos: 2
¿Qué numero estoy pensando? : 4
No has acertado
¿Qué numero estoy pensando? : 5
Has acertado!!
Has acertado 1 veces y has fallado 1 veces. Eran solución: 6, 5
Quieres probar otra vez ? (S/N): N
Adiós


Clase AdivinanzaNroRandom (main)

Código: [Seleccionar]
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.Random;
import java.util.Scanner;
public class AdivinanzaNroRandom {
      public static void main(String arg[ ]) {
           Random rnd = new Random();
           Scanner teclado = new Scanner(System.in);
           String continuar="S";
           int respuestas[];
           
           do {
               int totalAciertos=0;
               int totalDesaciertos=0;
               
               System.out.println("Introduce el número inicial del rango :");
               int inicioRango = Integer.parseInt(teclado.next());
               
               System.out.println("Introduce el número final del rango :");
               int finalRango = Integer.parseInt(teclado.next());
               finalRango = finalRango+1;// para que se incluya en el rango el numero final ingresado

               System.out.println("Introduce el númerode intentos :");
               int intentos = Integer.parseInt(teclado.next());
               respuestas = new int[intentos];
               int i=0;
               int j=0;
                    do {
                        int numeroOculto = (int)(rnd.nextDouble() * (finalRango-inicioRango) + inicioRango);
                        System.out.println("¿Qué numero estoy pensando?");
                        int numeroElegido = Integer.parseInt(teclado.next());
                        respuestas[i]=numeroOculto;
                            if (numeroElegido==numeroOculto) {
                                System.out.println("Has acertado!!");
                                totalAciertos = totalAciertos+1;
                            } else {
                                System.out.println("No has acertado!!");
                                totalDesaciertos = totalDesaciertos+1;
                            }
                        i++;   
                    }
                    while(i<intentos);
                    System.out.print("Has acertado "+totalAciertos+" veces y has fallado "+totalDesaciertos+ " veces. Eran solucion :");
                    for (j=0;j<intentos;j++){
                        System.out.print(respuestas[j]);
                            if (j<(intentos-1)){
                                System.out.print(",");} else {System.out.println("");}
                    }
                    System.out.println("Quieres probar otra vez ? (S/N):");
                    continuar = teclado.next();
                }
                while(continuar.equals("S"));
                System.out.println("Adiós");
           //System.out.println("el numero ingresado es :"+inicioRango); 
      }
}
« Última modificación: 01 de Marzo 2018, 19:05 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas LuisM, el programa cumple con lo que se pedía y parece muy bien planteado el anidamiento de bucles con un código bien compacto. Lo único que no veo del todo limpio es int numeroOculto = (int)(rnd.nextDouble() * (finalRango-inicioRango) + inicioRango); ya que hacer un casting de double a int creo que no sería necesario, pudiendo directamente trabajar con enteros. De todas formas esto no es demasiado relevante aquí.

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