Título: Problema con el inicio del programa Publicado por: TheFICBoss en 2 Agosto 2013, 15:17 pm Hola, buenos dias!
Pues bien, yo tengo este código: Código enum Piezas{REY,DAMA,ALFIL,CABALLO,TORRE,PEON}; enum Colores{BLANCO,NEGRO}; Y cuando lo ejecuto me da el sgte. error: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 at Ajedrez.Tablero.<init>(Tablero.java:8) at Ajedrez.Tablero.main(Tablero.java:78) Yo creo que es del arranque, que no sabe muy bien donde empezar a ejecutarse. Lo digo por que me da fallo en la main y he estado indagando por ahi y es lo que me aparecía. Agradecería cualquier ayuda. Un saludo a todos! :D Título: Re: Problema con el inicio del programa Publicado por: TheFICBoss en 2 Agosto 2013, 15:24 pm NO se porque la funcion iniciarPartida me la copió asi, está mal.
No me deja ponerla bien... Título: Re: Problema con el inicio del programa Publicado por: 1mpuls0 en 2 Agosto 2013, 16:38 pm Para eliminar caracteres extraños, copia tu código primero a un BLOC DE NOTAS después del bloc de notas copialo aquí.
Utiliza las etiquetas GeSHi. Saludos. Título: Re: Problema con el inicio del programa Publicado por: Alien-Z en 3 Agosto 2013, 16:57 pm El error está en que no se puede acceder a una posición de un array bidimensional si solo indicas una de las dimensiones. Lo tienes en casi todo el código así:
Código
Se debe utlizar de la siguiente forma: Código
Un saludo. Título: Re: Problema con el inicio del programa Publicado por: TheFICBoss en 4 Agosto 2013, 01:09 am Si ya lo se, eso es lo que mencione que me copiara mal...
En realidad ya lo tengo array[ i ][1] ... Lo acabo de corregir (al fin -.-), ahora es tal cual mi código. Gracias a todos Título: Re: Problema con el inicio del programa Publicado por: Alien-Z en 4 Agosto 2013, 15:26 pm Ya me parecía a mi que eso te lo debía haber indicado el IDE. Ahora que lo miro detenidamente me he fijado donde falla:
Código
Creas un array de tamaño 7x7 pero pones como condición de continuación en los bucles que "i, j"sea menor que "8, 8", por tanto el bucle intentará acceder a la posición "array[7][7]" sin embargo el array va desde array[0][0] hasta array[6][6]; te sales de él e intentas acceder a una posición que no existe. La condición de continuación debe ser "i < 7". Y un pequeño matiz: Código
No es necesario utilizar "this" en este constructor porque las variables no están siendo ocultadas, debes utilizarlo cuando por ejemplo recibes como parámetro una variable con el mismo nombre que un atributo miembro y quieras distinguirlos: this.pz -> atributo del objeto pz -> Variable que me han pasado como parámetro Un saludo. Título: Re: Problema con el inicio del programa Publicado por: TheFICBoss en 4 Agosto 2013, 23:30 pm Lo del this que me dices lo puse después, al principio ya lo tenía sin él. Muchas gracias por tu respuesta, que descuido más tonto... Antes lo tenía declarado así, y también fallaba: Pieza array[][]; Un saludo y gracias de nuevo! :D Título: Re: Problema con el inicio del programa Publicado por: TheFICBoss en 5 Agosto 2013, 00:23 am Si no es mucho pedir, me pueden ayudar con esta función?
public String toString(){ String FEN = null; for(int i=7;i>=0;i--){ for(int j=0;j<8;j++){ switch(array[ i ][j].pz){ ------> FALLA AQUÍ case TORRE: if(array[ i ][j].cl==Colores.BLANCO) FEN=FEN+"T"; else FEN=FEN+"t"; break; case CABALLO: if(array[ i ][j].cl==Colores.BLANCO) FEN=FEN+"C"; else FEN=FEN+"c"; break; case ALFIL: if(array[ i ][j].cl==Colores.BLANCO) FEN=FEN+"A"; else FEN=FEN+"a"; break; case DAMA: if(array[ i ][j].cl==Colores.BLANCO) FEN=FEN+"D"; else FEN=FEN+"d"; break; case REY: if(array[ i ][j].cl==Colores.BLANCO) FEN=FEN+"R"; else FEN=FEN+"r"; break; default: FEN=FEN+"1"; break; } } FEN=FEN+"/"; } return FEN; } Me da exactamente el mismo fallo que antes, pero esta vez he revisado bien los bucles FOR y ahi no puede estar el fallo, por que mi array lo declaré como [8][8]. Título: Re: Problema con el inicio del programa Publicado por: Alien-Z en 5 Agosto 2013, 00:39 am No veo dónde puede fallar. En el switch se puede usar variables de tipo Enum, Integer y String, y por lo que has mostrado en los otros posts puedo suponer que "array[j].pz" sigue siendo un Enum, por tanto es correcto.
¿Has inicializado correctamente todas las posiciones del array?. ¿Podrías poner el código completo separado por módulos y utilizando las etiquetas code?. Título: Re: Problema con el inicio del programa Publicado por: TheFICBoss en 5 Agosto 2013, 01:48 am Código:
Aqui te dejo el código. Por cierto, no sabía que había una etiqueta code para esto, mucho más cómodo. Un saludo! :D Título: Re: Problema con el inicio del programa Publicado por: TheFICBoss en 10 Agosto 2013, 16:12 pm Ya encontré el fallo! No puedo declarar pz=null en el constructor de Pieza.
Saludos :D Título: Re: Problema con el inicio del programa Publicado por: Alien-Z en 11 Agosto 2013, 16:30 pm Ya encontré el fallo! No puedo declarar pz=null en el constructor de Pieza. Saludos :D En teoría si deberías poder inicializarlo a null, otra cosa es que luego intentes usarlo sin haberle asignado ningún valor. Un saludo. |