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

Error en secuencia de código

Estas en el tema de Error en secuencia de código en el foro de Java en Foros del Web. Hola a todos, tengo una duda en en error del siguiente código de Java Aparece el error java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 , es decir ...
  #1 (permalink)  
Antiguo 11/06/2015, 10:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 184
Antigüedad: 15 años, 6 meses
Puntos: 1
Error en secuencia de código

Hola a todos,
tengo una duda en en error del siguiente código de Java
Aparece el error java.lang.IndexOutOfBoundsException: Index: 0, Size: 0, es decir que intento acceder a una estructura de longitud cero. Para localizar el error, he ido colocando diferentes out.print, pero me encuentro con el siguiente caso, el error aparece entre dos lineas de comentarios, lo que no tiene sentido. Entiendo que se pueda producir al entrar en la función copiar unidad, pero hago un size() de los elementos que le introduzco a la función y ambos son correctos (marcado en azul en el código). ¿Dónde me puede estar generando el error?

Gracias a todos por vuestro tiempo.

CÓDIGO A EJECUTAR
----------------------------


Código:
 int vida;
	 //inicializammos los atributos
	 inicializarU(r.getAtributos()); System.out.print("OK INICIALIZAR UNIDADES \n");
	 inicializarUnidades(r.getAtributosB());System.out.print("OK INICIALIZAR UNIDADES B\n"); 
	
	 //compiamos los objeto a la estructura
	 System.out.print("COMPROBACION LA:" + lA.size() + "\n");
	 System.out.print("COMPROBACION R.LA:" + r.getAtributos().size() + "\n");
	 
	 copiarUnidad(lA, r.getAtributos());System.out.print("OK COPIAR UNIDADES \n");
	 copiarUnidad(lAE, r.getAtributosB()); System.out.print("OK COPIAR UNIDADES B\n");
	 
	 //inicializamos los estados y los estados enemigos
	 inicializarEstados(r.getEstados()); System.out.print("OK INICIALIZAR ESTADOS \n");
	 inicializarEstados(r.getEstadosB)); System.out.print("OOOK INICIALIZAR UNIDADES B\n");
	 
	 //copiamos objetos a la estructura arbol
	 copiarEstados(lE, r.getEstados()); System.out.print(OOK COPIAR UNIDADES ARBOL\n");
	 copiarEstados(lE, r.getEstadosB()); System.out.print("OK COPIAR UNIDADES ARBOL E\n");
CÓDIGO RESULTANTE
----------------------------
OK ENTRA
OK INICIALIZAR UNIDADES
OK INICIALIZAR UNIDADES E
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
COMPROBACION LA:5
COMPROBACION R.LA:5
...

Última edición por Olbapk; 11/06/2015 a las 10:15 Razón: error en el título
  #2 (permalink)  
Antiguo 11/06/2015, 10:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 184
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Error en secuencia de código

Me he dado cuenta comentando diferentes partes del código, como las funciones copiarUnidad, que el error aparece de forma "aleatoria" en diferentes partes. Algunas veces aperece al iniciar el código (como en el caso que he comentado dichas funciones), otras veces, aún comentándolas, aparece en lugares diferentes.
  #3 (permalink)  
Antiguo 12/06/2015, 02:48
 
Fecha de Ingreso: octubre-2008
Mensajes: 184
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Error en secuencia de código

Hola de nuevo,
sigo sin dar con el error, quizá alguno pueda darme un consejo para dar con la estructura la cuál pertenece este error, ya que es un código bastante complejo y posee diferentes cadenas. Aunque he revisado la secuencia del código para comprobar que siempre que llamo a una estructura esta está inicializada, hay alguna que se me está pasando, pero al aparecer de forma aleatoria en el código no puedo aislarla. ¿Es posible obteber algún tipo de información del error? He estado siguiendo el código despues del error, pero los errores siguientes después del mismo, me apuntan a diversas partes, que he ido revisando pero nada, ya que apunta a inicializaciones de variables y cosas así.

Saludos y gracias.
  #4 (permalink)  
Antiguo 12/06/2015, 09:00
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Error en secuencia de código

Buenas,

Intenta hacer un printStackTrace() de la excepcion. De esta forma te va a decir cual es la linea exacta del codigo que falla.

Ese error se suele dar cuando intentas acceder a un elemento no existente dentro de una lista inicializada.

Un ejemplo reproducible:

Código Java:
Ver original
  1. public static void main(String[] args) {
  2.         List<String> list = new ArrayList<String>();//Empty List
  3.         list.get(0);
  4.     }
Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 12/06/2015, 09:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 184
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Error en secuencia de código

Buenas Profesor_Falken,

gracias por comentarme el printStackTrace(), no lo conocía. He estado informándome sobre lo que hace y me viene genial, el problema es que tendría que saber donde falla para lanzarlo, pero como se reproduce "aleatoriamente" en mi programa, no se donde añadirlo.

Saludos.
  #6 (permalink)  
Antiguo 15/06/2015, 08:54
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Error en secuencia de código

Buenas,

Tienes que encerrar el codigo susceptible de fallo en un bloque try-catch.

Entiendo que saber usar las excepciones en java no?


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: Ninguno
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:03.