IndexOutOfBoundsException[RESOLVIDO]

2 respostas
W

Boa tarde pessoal,
alguém saberia explicar a situação abaixo?

A lista retornada contém 2 elementos, na primeira passagem pelo loop, fuciona normalmente, mas na segunda passagem da o erro [color=red]Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 1, Size: 0[/color] E estranho, pois no índice 1, contém um elemento na lista.
Não se preocupem com o resto do código, o problema está no argumento passado ao construtor new XMLcolor=red[/color]
Mas usando o for do Java 5, funciona normalmente.

List<Element> listaServidores = new ArrayList<Element>(); listaServidores = servidores.setTagServidorGroup("servidores"); int tamanhoListaServidores = listaServidores.size();\O tamanho retornado é 2 for(int i = 0; i < tamanhoListaServidores; i++){ XML grupoServidor = new XML(listaServidores.get(i));\ <---- O erro ocorre aqui listaServidorGroup = grupoServidor.setTags("servidorgroup"); if(!listaServidorGroup.isEmpty()){ for(int j = 0; j < listaServidorGroup.size(); j++){ XML tagUsuario = new XML (listaServidorGroup.get(j)); nomeServidorGroup.add(tagUsuario.lerElemento().getFirstChild().getNodeValue()) ; System.out.println(tagUsuario.lerElemento().getFirstChild().getNodeValue()); } } listaServidores = grupoServidor.setTags("servidor"); if(!listaServidores.isEmpty()){ for(int m = 0; m < listaServidores.size(); m++){ XML tag = new XML(listaServidores.get(m)); nomeServidor.add(tag.lerElemento().getFirstChild().getNodeValue()); System.out.println(tag.lerElemento().getFirstChild().getNodeValue()); } } }//end for

Usando o for do Java 5, funciona.

List<Element> listaServidores = new ArrayList<Element>(); listaServidores = servidores.setTagServidorGroup("servidores"); int tamanhoListaServidores = listaServidores.size(); //Este for está funcionando for(Element var : listaServidores){ XML grupoServidor = new XML(var);// <-- é passado o mesmo elemento ao construtor listaServidorGroup = grupoServidor.setTags("servidorgroup"); if(!listaServidorGroup.isEmpty()){ for(int j = 0; j < listaServidorGroup.size(); j++){ XML tagUsuario = new XML (listaServidorGroup.get(j)); nomeServidorGroup.add(tagUsuario.lerElemento().getFirstChild().getNodeValue()) ; System.out.println(tagUsuario.lerElemento().getFirstChild().getNodeValue()); } } listaServidores = grupoServidor.setTags("servidor"); if(!listaServidores.isEmpty()){ for(int m = 0; m < listaServidores.size(); m++){ XML tag1 = new XML(listaServidores.get(m)); nomeServidor.add(tag1.lerElemento().getFirstChild().getNodeValue()); System.out.println(tag1.lerElemento().getFirstChild().getNodeValue()); } } }//end for

Agradeço a atenção, abs.

2 Respostas

G

Boa tarde,
tenta fazer um teste aí… muda para isso:

List<Element> listaServidores = new ArrayList<Element>(); listaServidores = servidores.setTagServidorGroup("servidores"); int tamanhoListaServidores = listaServidores.size();\O tamanho retornado é 2 for(int i = 0; i < tamanhoListaServidores; i++){ XML grupoServidor = new XML(listaServidores.get(i));\ <---- O erro ocorre aqui listaServidorGroup = grupoServidor.setTags("servidorgroup"); if(!listaServidorGroup.isEmpty()){ for(int j = 0; j < listaServidorGroup.size(); j++){ XML tagUsuario = new XML (listaServidorGroup.get(j)); nomeServidorGroup.add(tagUsuario.lerElemento().getFirstChild().getNodeValue()) ; System.out.println(tagUsuario.lerElemento().getFirstChild().getNodeValue()); } } listaServidores2 = grupoServidor.setTags("servidor"); if(!listaServidores2.isEmpty()){ for(int m = 0; m < listaServidores2.size(); m++){ XML tag = new XML(listaServidores2.get(m)); nomeServidor.add(tag.lerElemento().getFirstChild().getNodeValue()); System.out.println(tag.lerElemento().getFirstChild().getNodeValue()); } } }//end for

flw.

W

Olá, descobri o erro. Por uma desatenção eu dava um add na lista que era usada no for onde entrava somente um elemento, logo ela ficava com 1 item, ou seja, índice 0 e como a próxima iteração do loop buscava o índice 1, dava o indexOutBound.
E no for do java 5 funcionava porque ele não itera por número.
A lista adicionada de forma errada foi onde vc apontou como listaServidores2, vlw a dica.
abs.

Criado 27 de julho de 2009
Ultima resposta 28 de jul. de 2009
Respostas 2
Participantes 2