Tengo un problema en un ejercicio de Java que dice lo siguiente:
Escriba un programa que te permita jugar a la primitiva.
-El programa debe generar una secuencia de números como si fuera un boleto (9 números; mayores de 10 y menores de 100).
10 20 30 45 80 70 90 45 20
-Después el usuario escribirá un numero:
-Si existe, mostrará lo siguiente: (Ejemplo 45)
10 20 30 XX 80 70 90 45 20
- Si no existe, mostrará lo siguiente: (Ejemplo 72)
Número 72 no existe
10 20 30 XX 80 70 90 45 20
- Se puede salir de la aplicación cuando el usuario escriba 0.
- En caso de tener todos los números tachados, se mostrará:
Te ha tocado la primitiva. Eres millonario.
Mi codigo es el siguiente:
Código:
-Como contemplo que se puedan repetir los numeros? y me los guarde? package ejercicioprimitiva; import java.util.Scanner; public class EjercicioPrimitiva { /** * @param args the command line arguments */ public static int menu() { int opcion; System.out.println(" |-------------------------------------------------|"); System.out.println(" | ~ MENU PRINCIPAL ~ |"); System.out.println(" |-------------------------------------------------|"); System.out.println(" | 1. Jugar a la Primitiva |"); System.out.println(" | 0. Salir de la aplicación |"); System.out.println(" |-------------------------------------------------|\n"); System.out.println("Introduzca la opción que desea:"); Scanner teclado = new Scanner (System.in); opcion = teclado.nextInt(); return opcion; } public static int GenerarNumero(){ int numero = 0; while((numero < 10) || (numero > 100)){ numero = (int)(Math.random()*100); } return numero; } public static void GuardarNumeros(int arrayNumeros[]){ for(int i=0; i<arrayNumeros.length; i++){ int numeroSorteo = EjercicioPrimitiva.GenerarNumero(); arrayNumeros[i] = numeroSorteo; } } public static int IntroducirNumeroTeclado(){ int numeroUsuario=0; System.out.println("Introduzca un numero (mayor que 10 y menor que 100): "); while((numeroUsuario < 10) || (numeroUsuario > 100)){ Scanner teclado = new Scanner (System.in); numeroUsuario = teclado.nextInt(); } return numeroUsuario; } public static void ComprobarNumero(int numeroUsuario, int arraySorteo[]){ boolean encontrado = false; for(int i=0; i<arraySorteo.length; i++){ if(numeroUsuario == arraySorteo[i]){ encontrado = true; arraySorteo[i] = -1; } } if(!encontrado){ System.out.println("El número " + numeroUsuario + " no existe!"); } } public static void ImprimirNumeros(int arrayNumeros[]){ for(int i=0; i<arrayNumeros.length; i++){ if(arrayNumeros[i]==-1){ System.out.print("XX"); }else{ System.out.print(arrayNumeros[i]); } } } public static void ComprobarResultadoFinal(int arrayNumeros[]){ boolean iguales = true; int i=0; while(i<arrayNumeros.length && iguales==true){ if(arrayNumeros[i]==-1){ iguales = true; i++; }else{ iguales = false; } } if(iguales){ System.out.println("\nTe ha tocado la primitiva! Eres millonario!"); }else{ System.out.println("\nLo siento no te ha tocado la primitiva!"); } } public static void main(String[] args) { int opcion; int salir=-1; int numeroUsuario=0; int[] arrayNumeros = new int[9]; do { opcion = EjercicioPrimitiva.menu(); switch (opcion) { case 1: EjercicioPrimitiva.GuardarNumeros(arrayNumeros); for(int i=0; i<arrayNumeros.length; i++){ numeroUsuario = EjercicioPrimitiva.IntroducirNumeroTeclado(); EjercicioPrimitiva.ComprobarNumero(numeroUsuario, arrayNumeros); EjercicioPrimitiva.ImprimirNumeros(arrayNumeros); } EjercicioPrimitiva.ComprobarResultadoFinal(arrayNumeros); break; case 2: System.out.println("Pulse 0 si desea salir de la aplicación:"); while(salir != 0){ Scanner teclado = new Scanner (System.in); salir = teclado.nextInt(); } break; default: break; } } while (opcion != 0); } }
Si meto por ejemplo un numero mayor de 10, me peta, no se porque.
Muchas gracias!