No se pudo iterar sobre los objetos de lista

Tener problemas con el iterador. Necesita iterar sobre ArrayList y encontrar cualquier otro objeto que no sea este e imprimir su nombre. El programa utiliza subprocesos. ¿Cómo puede el iterador producir un error cuando entró? while bucle cuando itr.hasNext() era igual true?

Stack trace:

Thread [JOE] (Suspended (exception NoSuchElementException)) 
    ArrayList$Itr.next() line: not available [local variables unavailable]  
    Monster.beginFight(Monster) line: 55    
    Monster.run() line: 28  

Método

private void tryName(Monster monster){

    Iterator<Monster> itr = room.monsters.iterator();

    while(itr.hasNext()){

        if (!itr.next().equals(monster)) {
            System.out.println(monster.getName() + "some text "
                    + itr.next().getName());

            break;
        }

}


}

¿Por qué tengo en ArrayList$Itr.siguiente() pestaña que muestra: Fuente no encontrada?

preguntado el 03 de mayo de 12 a las 22:05

Básicamente, tu problema es llamar itr.next() dos veces en el lazo. -

Recuerde compilar con información de depuración para obtener variables locales. -

1 Respuestas

Cada vez que llamas itr.next avanzará el iterador al siguiente elemento. Necesitas hacer algo como:

while(itr.hasNext()) {
    Monster m = itr.next();
    // rest of your code using m instead of itr.next()
}

contestado el 03 de mayo de 12 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.