Bonjour,
J'ai crée une liste d'un objet termite. je la rempli et à un moment, je dois éliminer certains éléments.
Je crée donc une méthode qui prend en paramètre l'id du termite et je le recherche dans ma liste.
voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
// On affiche le numéro du paramètre
System.out.print("termite numero :");System.out.println(idterm);
for(int iboucle = 0; iboucle< forreur.size(); iboucle++)
{
        // On affiche l'id du termite courant
        System.out.print(" \t numéro termite courant:");
        System.out.println(forreur.get(iboucle).getIdTermite());
 
        if(idterm == forreur.get(iboucle).getIdTermite())
        {
               System.out.println("\t vire un foreur");
               System.out.print("reste : ");
               System.out.print(forreur.size());
               System.out.println("foreur");
 
               forreur.remove(iboucle);
               return;
        }    
}
En sorti, j'obtiens donc l'evolution de la mort de mes termites, et à certains moment, j'obtiens l'erreur :
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 25, Size: 25

avec la sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
termite numero :0
          numéro termite courant :0
         vire un foreur
reste : 30foreur
termite numero :9
          numéro termite courant :1
          numéro termite courant :2
          numéro termite courant :3
          numéro termite courant :4
          numéro termite courant :5
          numéro termite courant :6
          numéro termite courant :7
          numéro termite courant :8
          numéro termite courant :9
         vire un foreur
reste : 29foreur
termite numero :20
          numéro termite courant :1
          numéro termite courant :2
          numéro termite courant :3
          numéro termite courant :4
          numéro termite courant :5
          numéro termite courant :6
          numéro termite courant :7
          numéro termite courant :8
          numéro termite courant :10
          numéro termite courant :11
          numéro termite courant :12
          numéro termite courant :13
          numéro termite courant :14
          numéro termite courant :15
          numéro termite courant :16
          numéro termite courant :17
          numéro termite courant :18
          numéro termite courant :19
          numéro termite courant :20
         vire un foreur
reste : 28foreur
termite numero :25
          numéro termite courant :1
          numéro termite courant :2
          numéro termite courant :3
          numéro termite courant :4
          numéro termite courant :5
          numéro termite courant :6
          numéro termite courant :7
          numéro termite courant :8
          numéro termite courant :10
          numéro termite courant :11
          numéro termite courant :12
          numéro termite courant :13
          numéro termite courant :14
          numéro termite courant :15
          numéro termite courant :16
          numéro termite courant :17
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 26, Size: 26
          numéro termite courant :18
          numéro termite courant :19
        at java.util.LinkedList.entry(LinkedList.java:368)
          numéro termite courant :21
        at java.util.LinkedList.get(LinkedList.java:313)
          numéro termite courant :22
        at termites.Termitiere.Simulation(Termitiere.java:284)
          numéro termite courant :23
        at termites.Main.main(Main.java:26)
          numéro termite courant :24
          numéro termite courant :25
         vire un foreur
reste : 27foreur
Je mets ma sortie pour montrer que c'est pas forcement le dernier termite qui pose problème.

Je ne comprend pas l'erreur ni pourquoi elle arrive au hazard.

Merci pour votre aide