Dans mon programme, j'utilise beaucoup la fonction Math.random(), parfois couplée à Math.round().
Lors de l'exécution de mon programme, il survient parfois (genre 1 fois sur 3) une erreur :
En cherchant dans d'autres posts, j'ai cru comprendre que cette erreur survenait lors de boucles ou d'appels infinis. Ce n'est pas mon cas.Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.util.Random.nextDouble(Unknown Source)
at java.lang.Math.random(Unknown Source)
at evolution.Amibe.combat(Amibe.java:105)
at evolution.Amibe.combat(Amibe.java:154)
Voici le code de la méthode où survient les erreurs
Il semble donc faire un appel infini sur la ligne ***, or pourtant, elle n'est pas systématique, en relançant mon programme plusieurs fois pour retomber sur l'erreur, il m'a fallu 5 tentatives...
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 public void combat(Amibe a){ [...] int c=(int)Math.round(Math.random()); **ligne 105 ** switch(c){ case 0 : [...] case 1 : [...] default : [...] } //***************************** //defense [...] //gestion de la defense [...] Amibe attaquant,defenseur,permutation; //si le combat n'est pas fini les roles s'echange while((energie>=10)||(a.getEnergie()>=10)){ permutation=this; attaquant=permutation; defenseur=a; *** defenseur.combat(attaquant); *** ** ligne 154 ** } }
Que se passe-t-il?
Partager