Java.util.NoSuchElementException

Résolu/Fermé
Amaurykas Messages postés 6 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 3 mars 2015 - Modifié par KX le 12/05/2013 à 11:47
Amaurykas Messages postés 6 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 3 mars 2015 - 12 mai 2013 à 12:05
Bonjour, je me heurte à un problème qui dépasse ma compréhension de Java :
voici mon code :

System.out.println("ok1");
		this.tPoisson = tPos.gettPositions();
		System.out.println("ok2");
		Convertisseur cConv1 = new Convertisseur(tPoisson,iNombreDePasDuTest); //il n'aime pas cette ligne?! WTF
		System.out.println("ok3");

avec le constructeur de Convertisseur :
public Convertisseur(int[][][] tPositions,int iPas) {
		super();
		System.out.println("Okai test");
		int[] tTemp = new int[2];
		int i;
		int j;
		for (i = 0; i < iPas; i++) {
			for (j = 0; j < 10; j++) {
				tTemp[0] = tPositions[i][j][0];
				tTemp[1] = tPositions[i][j][1];
				if (tTemp[0] != -1) {
					lListePositionsDemandées.addLast(tTemp); 
				}
			}
		}
}


et voici mon message d'erreur :

ok1
ok2
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
	at java.util.LinkedList$ListItr.next(Unknown Source)
	at approchei.Approchei.setiCoutModificationListe(Approchei.java:111)
	at approchei.Approchei.settRésultats(Approchei.java:137)
	at principale.LaGrandeClasse.<init>(LaGrandeClasse.java:111)
	at interface_graph.BoiteDialogue.calcul(BoiteDialogue.java:912)
	at interface_graph.BoiteDialogue$2.actionPerformed(BoiteDialogue.java:138)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$400(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Okai test
ok3


L'erreur semble donc se situer sur le constructeur, mais je ne comprends pas où.
Merci de m'éclairer de vos lumières, je vois vraiment pas quoi faire.

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 mai 2013 à 11:54
Il faut toujours regarder les premières lignes des exceptions, c'est là que l'on trouve les seules informations importantes pour trouver le bug :

java.util.NoSuchElementException
	at java.util.LinkedList$ListItr.next(Unknown Source)
	at approchei.Approchei.setiCoutModificationListe(Approchei.java:111)
	at approchei.Approchei.settRésultats(Approchei.java:137)
	at principale.LaGrandeClasse.<init>(LaGrandeClasse.java:111)

D'après cette description tu as une méthode "setiCoutModificationListe" où tu utilises des Iterator. Or tu fais un "next" en trop, c'est à dire sur une liste où il n'y a plus rien après, d'où l'exception "NoSuchElementException".
Il faut que tu utilises la méthode "hasNext" avant de faire un "next" pour savoir à quel moment il n'y a plus d'élément pour t'arrêter. Tu peux aussi utiliser une boucle for each qui est plus simple à manipuler que les Iterator et qui suffit dans la plupart des cas.
1
Amaurykas Messages postés 6 Date d'inscription dimanche 12 mai 2013 Statut Membre Dernière intervention 3 mars 2015
12 mai 2013 à 12:05
Merci beaucoup, je t'aime très fort tu viens de me sortir de 3 heures d'enfer. Pour info, je faisais tourner deux itérateurs sur deux listes identique avec un while(premièreliste.hasNext()) j'ai simplement rajouté && secondeliste.hasNext() et ca tourne.
0