Autor Tema: Numeros Aleatorios en Java. Clase Random programa simulación generador CU00908C  (Leído 2438 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola dejo el ejercicio  CU00908C del taller de programación Java avanzado de aprenderaprogramar. Generación de números aleatorios en Java. Rangos. Clase Random. 


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

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


Codigo de la clase AdivinarNumero

Código: [Seleccionar]
import java.util.Scanner;
import java.util.Random;
/**
 * Write a description of class AdivinarNumero here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class AdivinarNumero
{
    public static String entradaUsuario="";
    public static Scanner entrada=new Scanner(System.in);

    public static void main(String arg[ ]) {
        String separador = new String(new char[63]).replace("\0", "*");
        boolean fin=true;
        int numeroInicio=0,numeroFin=0,numeroIntentos=0, numeroUsuario=0;

        Random rnd = new Random();
        do{
            int aciertos=0,fallos=0;
            String solucion="",introducidos="";
            System.out.print("\t\t\t"+separador+
                "\n\t\t\t*** Ejercicio CU00908C Java avanzado aprenderaprogramar.com ***\n"+
                "\t\t\t***\t\t JUEGO ADIVINAR UN NUMERO \t\t    ***\n"+
                "\t\t\t*** Debe de introducir el numero inicial, el numero final   ***\n"+
                "\t\t\t*** y el numero a adivinar                                  ***\n"+
                "\t\t\t"+separador+"\n\n");
            System.out.print("\t\t\t\tIntroduzca numero inicial del rango: ");
            numeroInicio=Integer.parseInt(validarNumero());
            System.out.print("\t\t\t\tIntroduzca numero final del rango: ");
            numeroFin=Integer.parseInt(validarNumero());
            System.out.print("\t\t\t\tIntroduzca el numero de intentos: ");
            numeroIntentos=Integer.parseInt(validarNumero());
            System.out.print("\n\t\t\t\tEL NUMERO A ADIVINAR ESTA ENTRE "+numeroInicio+" Y "+(numeroInicio+numeroFin-1)+"\n");
            int i=1;
            while(i<=numeroIntentos){
                int numeroAleatorio=(int)(rnd.nextDouble() * numeroFin+numeroInicio );
                System.out.print("\t\tIntento numero: "+i+" ¿Que numero piensa usted que es?: ");
                numeroUsuario=Integer.parseInt(validarNumero());
                solucion=solucion+numeroAleatorio+",";
                introducidos=introducidos+numeroUsuario+",";
                if(numeroUsuario!=numeroAleatorio){
                    System.out.print("\t\t No!!!!! Ha fallado\n");
                    fallos=fallos+1;
                }
                else{
                    System.out.print("\t\tSi!!!!! Ha acertado\n");
                    aciertos=aciertos+1;}
                i++;
            }
            System.out.print("\n\t\t Ha acertado "+aciertos+" veces\n"+
                "\t\t Ha fallado "+fallos+" veces.\n\n"+
                "\t\t Los numeros introducidos son "+introducidos+
                "\n\t\t Los numeros a adivinar eran  "+solucion);
            System.out.print("\n\n\t\t¡¡ PULSE INTRO PARA CONTINUAR !!\n\n\t\tCualquier otra + intro FINALIZAR\n\n");
            entradaUsuario=entrada.nextLine();
            System.out.print('\u000C');
            fin=entradaUsuario.equals("");
        }while(fin);
System.out.print("\n\n\n\n\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n\t\t\t\t\t\tADIOS"+"\n\t\t\t"+separador+"\n"+"\t\t\t"+separador+"\n");
    }//Fin main
    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (isNumeric(entradaUsuario) == true) {
                ok=true;
            }
            else{
               
                System.out.print("Solo se admiten numeros\n");
                entradaUsuario="";
            }

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }
}

Gracias  ;)
« Última modificación: 17 de Agosto 2019, 13:26 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, para quien revise este ejercicio, lo he revisado y lo veo perfecto: realiza lo pedido y funciona correctamente. 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".