Ver Mensaje Individual
  #7 (permalink)  
Antiguo 12/11/2014, 03:17
GM_Juanjo
 
Fecha de Ingreso: febrero-2005
Mensajes: 39
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: error en programita

Tienes bastantes cosas mal.

Usas demasiadas variables de clase que luego ni usas ni recuerdas o usas una a veces y a veces otra cuando debería ser la misma,etc...


Los bucles por favor, deja de hacer esto:
for (int r=0;r<6;r++){
numeros[r]=0;
}

Es más en alguno tenias puesto 5 en vez de 6...

tienes una bonita variable length para algo y te evitara muchos errores:

for (int r=0;r<numeros.length;r++){
numeros[r]=0;
}

Lo primero es el concepto, realmente el jugador mete 5 números,6 o 7? Yo diría que 6 pero me explico:

static int persona[]={0,0,0,0,0}; --> 5 números solo, no 6
Cambiamos a --> static int persona[]={0,0,0,0,0,0};


Luego en el menú de premios veo hasta 7 aciertos pero imagino que el de "banderita" vale doble o alguno de ellos.

Esto es una basura:(No te lo tomes a mal, nadie nace aprendido pero intenta hacer las cosas más sencillas y eso es teniendo claro lo que quieres desde el inicio, no intentar ir parcheando a partir de una vaga idea)

Código:
          propiedad = dato.nextInt();
          do{
          for (int e=0;e<6;e++){
             if(propiedad > 0 && propiedad< 49){
              propiedad=dato.nextInt();  
              persona[e] = propiedad;
                       System.out.println("Siguiente numero en la posicion " + e );
            }
             }juego=false;                      
          }while (juego==true);
No entiendo por que lees fuera del bucle y no todos dentro de un for si total no compruebas ni si introducen un entero(lees un int directo, como metan un caracter PUM)...lo vamos a pasar a un while y te dejo que pruebes a hacer la función de comparar repetidos

Código:
          while(juego==false)
          {
                System.out.println("Siguiente numero en la posicion " + e );
                propiedad = dato.nextInt(); //Yo comprobaria que no puedan meter string pero bueno opcional
                //Comprueba que propiedad no este ya en el array de persona eso te lo dejo
                persona[e] = propiedad;  
                e++;
                //Cuando la persona meta el ultimo numero podemos jugar
                if(e==persona.length) //Nada de 6, mejor la longitud del vector por si quieres cambiar el juego y evitas muchos errores
                    juego=true;
          }
Ahora veo que el menu es un bucle que siempre esta en 0, cambiamos esto:

Código:
    alfa=gato.nextInt();
    do{
    switch(menus){
por esto:

Código:
    menus=gato.nextInt();
    do{
    switch(menus){

Estuve retocando algunas cosas más pero te deje algunas para que hagas tu, mira los comentarios:

Código:
import java.util.Random;
import java.util.Scanner;
public class juegando{
 static int numeros[]={0,0,0,0,0,0};
 static int persona[]={0,0,0,0,0,0};
 boolean acierto=false;
 static boolean acerto=false;
 static boolean extra=false;
 static Random azar=new Random();
 static int numazar=0, opcion=0, menus=0, alfa=0, aciertos=0, aciertitos=0, propiedad=0;
 
 //Aquí se inicializa el array que genera el numero aleatorio. (Para que no haya errores).
 public static void  inicializar(){
  for (int r=0;r<numeros.length;r++){
  numeros[r]=0;
  }
 }
 
 
 //Esto es lo que muestra y hace funcionar el menu.
   public static void menu(){
    Scanner gato=new Scanner(System.in);

    do{
    System.out.println("Buenos dias. Usted esta jugando al 5 de ORO!\n 1-Ingresar jugada\n 2-Ver jugada\n 3-Salir");
    menus=gato.nextInt();
    switch(menus){
     case 1:
     cargador();
     inicializar();
     random();
     banderita();
     comparacion();
     opcion(opcion);
     break;
     case 2:
     System.out.println("Su jugada fue: " + persona[0] + " " + persona[1] + " " + persona[2] + " " + persona[3] + " " + persona[4] + " " + persona[5]);
     break;
     default:
         break;
     }
    }while (menus!=3);
   } 
   
//Aqui es donde se piede y carga la jugada del jugador en un array.
   public static void cargador(){ 
   boolean juego=false;
    System.out.println("Usted debe ingresar un número del 1 al 48, después que escriba un número apriete enter. Hasta ingresar su jugada completa.");
       System.out.println("Usted no puede ingresar números repetidos.");  
       System.out.println("Ingrese su jugada aqui.");                  
          Scanner dato = new Scanner(System.in);
          //Numeros posibles={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48};
          int e=0;
          while(juego==false)
          {
                System.out.println("Siguiente numero en la posicion " + e );
                propiedad = dato.nextInt(); //Yo comprobaria que no puedan meter string pero bueno opcional
                //Comprueba que propiedad sea un numero del 1 al 48 sino no lo guardes en persona ni incrementes la e en su lugar
                //Envia un mensaje al usuario de que es un numero fuera de rango
                //Comprueba que propiedad no este ya en el array de persona eso te lo dejo sino no lo guardes en persona ni incrementes la e en su lugar
                //Envia un mensaje al usuario de que es un numero repetido
                persona[e] = propiedad;  
                e++;
                //Cuando la persona meta el ultimo numero podemos jugar
                if(e==persona.length) //Nada de 6, mejor la longitud del vector por si quieres cambiar el juego y evitas muchos errores
                    juego=true;
          }
    }
 
   
//Aqui es donde se genera el numero aleatorio.
   public static void random(){
   for (int h=0;h<6;h++){
    numazar=azar.nextInt(48-1+1)+1;
    numeros[h]=numazar;
    System.out.println(numeros[h]);
    }
   }
//Esto es una bandera que avisa si esta un numero o no en el array.
   public static boolean banderita(){
    boolean esta=false;
    for (int r=0;r<6;){
     if (numeros[r]==numazar){
      return true;
      }else return false;
     }
     return esta;
    }
   
//Aqui compara los numeros ingresados con los sorteados
   public static int comparacion(){
   boolean soniguales=true;
   for (int i=0; i<persona.length;i++){     
   for (int u=0;u<persona.length; u++){
    if(persona[i] == numeros[u]){
     aciertitos++;
    }
   }
   }
   return aciertos;
   }
 
   
//Aqui se define que premio gano el jugador.
   public static void opcion(int aciertos){     
   switch (aciertos){
    case 0:
     System.out.println("Usted no acerto ninguna bolilla");
     
    break;        
    case 1:
     System.out.println("Usted acerto   " + aciertos + "/5" + "ganó el pozo revancha");
   
    break;  
    case 2:
     System.out.println("Usted acerto   " + aciertos + "/5" + "ganó $100");
     
    break;  
    case 3:
     System.out.println("Usted acerto   " + aciertos + "/5" + "ganó $250");
     
    break;       
    case 4:
    System.out.println("Usted acerto   " + aciertos + "/5" + "ganó $1000");
    break;        
    case 5:
    System.out.println("Usted acerto   " + aciertos + "/5" + "ganó $5000");
    break;        
    case 6:
       System.out.println("Usted acerto    " + aciertos + "/5" + "ganó el pozo de plata");
    break;         
    case 7: 
     System.out.println("Usted acerto   " + aciertos + "/5"  + "ganó el pozo de oro");
    break;
    }
   }
  
   //Este es el bloque principal del codigo por que el es la "cabeza del programa". (Comanda todo el programa pasando por todos los bloques de codigo nesesarios).
 public static void main(String[] args){
  menu();
 /* inicializar();
  cargador();
  random();
  banderita();
  comparacion();
  opcion(opcion);*/
  }
}
Saludos,

Última edición por GM_Juanjo; 12/11/2014 a las 03:23