Foros del Web » Programación para mayores de 30 ;) » Java »

Error en programa de primitiva

Estas en el tema de Error en programa de primitiva en el foro de Java en Foros del Web. Hola. Tengo un problema en un ejercicio de Java que dice lo siguiente: Escriba un programa que te permita jugar a la primitiva. -El programa ...
  #1 (permalink)  
Antiguo 20/03/2012, 20:07
Avatar de tuka_85  
Fecha de Ingreso: febrero-2010
Ubicación: Santander/Huelva
Mensajes: 190
Antigüedad: 14 años, 2 meses
Puntos: 5
Error en programa de primitiva

Hola.

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:
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);
}
}
-Como contemplo que se puedan repetir los numeros? y me los guarde?
Si meto por ejemplo un numero mayor de 10, me peta, no se porque.


Muchas gracias!
__________________
http://www.martatorreajo.es
  #2 (permalink)  
Antiguo 21/03/2012, 00:04
 
Fecha de Ingreso: febrero-2012
Mensajes: 75
Antigüedad: 12 años, 2 meses
Puntos: 6
Respuesta: Error en programa de primitiva

Primero comprueba como estableces la condición de si te toca la primitiva. Creo que si el último número está tachado el programa reconoce como si te ha tocado la primitiva. Debes establecer la condición sobre el número de iguales=9 no sobre el true/false.

Como contemplas que se puedan repetir? Bueno, en principio se pueden repetir, por lo tanto no se donde está el problema. Y que te los guarde. En principio los guardas en el array. (Creo que no entendí tu duda).

Lo del número. Creo que te peta en la comprobación del número.
Pide que te pinte por pantalla el boleto después de introducir el número y antes de la comprobación:

numeroUsuario = EjercicioPrimitiva.IntroducirNumeroTeclado();
//Pinta el boleto aquí en medio
EjercicioPrimitiva.ComprobarNumero(numeroUsuario, arrayNumeros);

Así compruebas que realmente es el boleto asignado, ya que en la función:

public static void GuardarNumeros(int arrayNumeros[]){
for(int i=0; i<arrayNumeros.length; i++){
int numeroSorteo = EjercicioPrimitiva.GenerarNumero();
arrayNumeros[i] = numeroSorteo;}}

no devuelves ningún valor
__________________
Si quieres conseguir resultados diferentes no hagas siempre lo mismo.

Mejora tu entorno. MestralCadiz con su comunidad.

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:34.