Autor Tema: Java Ejemplo números aleatorios clase Random. Enteros nextInt lotería CU00909C  (Leído 4512 veces)

LuisM

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 131
    • Ver Perfil
Hola a todos !! paso a dejar el código de los dos ejercicios de la clase CU00909C del tutorial pdf de programación Java avanzada. Desde ya muchas gracias. Un saludo, Luis

EJERCICIO Nº 1

Crea un programa que elija dos números enteros aleatorios A y B pero no los muestre por pantalla aún. Si los dos números fueran iguales, deberá repetirse la elección hasta que sean distintos. El programa preguntará por quién apostamos, A o B (gana el número más alto). Una vez el usuario haya introducido su apuesta, el programa mostrará el valor de A y B, dirá si hemos ganado la apuesta (acertado el número más alto) o perdido y nos dirá cuántas partidas hemos ganado y perdido hasta el momento. Tras una jugada, nos preguntará si queremos jugar otra vez.

Citar
Ejemplo de ejecución:

Apuestas por A o por B ? : A
A saca un 9 y B saca un 6     HAS GANADO!!!
Llevas 1 partidas ganadas y 0 partidas perdidas
Quieres probar otra vez ? (S/N) : S
Apuestas por A o por B ? : A
A saca un 1 y B saca un 8     HAS PERDIDO!!!
Llevas 1 partidas ganadas y 1 partidas perdidas
Quieres probar otra vez ? (S/N) : N
Adiós


Solución propuesta:

Código: [Seleccionar]
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.Random;
import java.util.Scanner;
public class Ejercicio1 {
      public static void main(String arg[ ]) {
           Random rnd = new Random();
           Scanner teclado = new Scanner(System.in);
           String continuar="S";
           String nroElegido="";
           int totalAciertos=0;
           int totalDesaciertos=0;
           String respuesta="";
           do {
               int nroA = rnd.nextInt(10);
               int nroB = rnd.nextInt(10);
               System.out.println("Apuestas por A o por B ?:");
               while(nroA==nroB){
                   nroB = rnd.nextInt(10);
                }

               nroElegido = teclado.next();
               
               while(nroElegido.equalsIgnoreCase("A")==false&&nroElegido.equalsIgnoreCase("B")==false){
                   System.out.println("Apuestas por A o por B ?:");
                   nroElegido = teclado.next();
               }               
               
               if ((nroElegido.equalsIgnoreCase("A")&&nroA>nroB)||(nroElegido.equalsIgnoreCase("B")&&nroB>nroA)){
                   totalAciertos=totalAciertos+1;
                   respuesta="  HAS GANADO!!!";
                } else {totalDesaciertos=totalDesaciertos+1;
                        respuesta="  HAS PERDIDO!!!";
                }
               
               System.out.println("A saca un "+nroA+" y B saca un "+nroB+respuesta);
               System.out.println("Llevas "+totalAciertos+" partidas ganadas y "+totalDesaciertos+" partidas perdidas");

               System.out.println("Quieres probar otra vez ? (S/N):");
               continuar = teclado.next();
                }
           while(continuar.equalsIgnoreCase("S"));
           System.out.println("Adiós");
           //System.out.println("el numero ingresado es :"+inicioRango); 
      }
}


EJERCICIO Nº 2

Ahora vamos a jugar a la “Lotería primitiva”. Para ello, se pedirá al usuario que introduzca 6 números enteros comprendidos entre el 1 y el 49 ambos incluidos. No estará permitido repetir número. Una vez elegidos los seis números el programa nos mostrará nuestros 6 números así como la combinación ganadora (ordenada de menor a mayor). Esta combinación constará de 6 números entre 1 y 49 elegidos al azar por el programa. Finalmente nos dirá cuántos aciertos hemos tenido y nos preguntará si queremos volver a jugar.

Citar
Ejemplo de ejecución:

Elige 6 numeros entre el 1 y el 49.
Elige el numero 1 : 3
Elige el numero 2 : 8
Elige el numero 3 : 14
Elige el numero 4 : 2
Elige el numero 5 : 34
Elige el numero 6 : 38
Numeros Elegidos    : 3  8  14  2  34  38
Combinación ganadora : 6  14   21  27  30  48
Has acertado : 1 números
Quieres probar otra vez ? (S/N) : n
Adiós


Código: [Seleccionar]
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.*;
public class Ejercicio2 {
      public static void main(String arg[ ]) {
           ArrayList lista = new ArrayList<Integer>();
           Random rnd = new Random();
           Scanner teclado = new Scanner(System.in);
           String continuar="S";
           int[ ] nroElegido = new int[6];
           int[ ] nroLoteria = new int[6];
           int totalAciertos=0;
           int i=0;
           int j=0;
           boolean nroRepetido=false;
           // elección de los números para el sorteo
           do {
               System.out.println("Elige 6 números entre el 1 y el 49.");
               for(i=0;i<6;i++){
                   do{
                       nroRepetido=false;
                       System.out.print("Elige el número "+(i+1)+" : ");               
                       nroElegido[i]=Integer.parseInt(teclado.next());
                       for (j=0;j<i;j++){
                           if (nroElegido[i]==nroElegido[j]){nroRepetido=true;}
                        }
                    }   
                   while(nroElegido[i]<1||nroElegido[i]>49||nroRepetido==true);
                }
               // ordena la lista de nros elegidos
               lista.clear();
               for (i=0;i<6;i++){lista.add(nroElegido[i]);}
               Collections.sort(lista);
               for (i=0;i<6;i++){nroElegido[i]=(int)lista.get(i);}
               // muestra los nros elegidos
               System.out.print("Los números elegidos son :");
               for (i=0;i<6;i++){
                   System.out.print(nroElegido[i]);
                   if(i==5){System.out.println("");} else {System.out.print(", ");}
                }
               // se realiza el sorteo de la loteria
               i=0;
               do {
                   nroLoteria[i] = rnd.nextInt(49)+1;
                   nroRepetido=false;
                   for (j=0;j<i;j++){
                       if (nroLoteria[i]==nroLoteria[j]){nroRepetido=true;}
                   }
                   if (nroRepetido==false) {i++;}
               }
               while(i<6);
               // ordena los numeros sorteados por la Loteria
               lista.clear();
               for (i=0;i<6;i++){lista.add(nroLoteria[i]);}
               Collections.sort(lista);
               for (i=0;i<6;i++){nroLoteria[i]=(int)lista.get(i);}
               // muestra los nros de la loteria
               System.out.print("Combinación ganadora :");
               for (i=0;i<6;i++){
                System.out.print(nroLoteria[i]);
                if(i==5){System.out.println("");} else {System.out.print(", ");}
                }
               // control de nros ganadores
               totalAciertos=0;
               for (i=0;i<6;i++){
                   for (j=0;j<6;j++){
                        if(nroElegido[i]==nroLoteria[j]){ totalAciertos = totalAciertos+1;}
                    }
                }
               System.out.println("Has acertado: "+totalAciertos+" números");
               System.out.print("Quieres probar otra vez?(S/N):");
               continuar = teclado.next();               
           } 
           while(continuar.equalsIgnoreCase("S"));
           System.out.println("Adiós");
           //System.out.println("el numero ingresado es :"+inicioRango); 
      }
}
« Última modificación: 04 de Marzo 2018, 14:52 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas LuisM el ejercicio 1 lo he repasado y funciona perfectamente y está bien planteado.

El ejercicio 2 me lanza un warning en compilación indicando Ejercicio2.java uses unchecked or unsafe operations. Recompile with -Xlintunchecked for details. Esto creo que sea debido a alguno de los casting que utilizas. Este ejercicio funciona también perfectamente. Veo un tanto extraño mantener por un lado los datos en un array tradicional y por otro usar un ArrayList para ordenar los datos. Creo que sería más "limpio" o bien trabajarlo todo en forma de ArrayList o bien usar una ordenación de arrays implementada manualmente. Pero eso no era el objetivo del ejercicio (cuyo objetivo era trabajar los aleatorios) así que todo bien.

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