Java.lang.StackOverflowError avc eclipse
minoucha-z
Messages postés
3
Statut
Membre
-
arth Messages postés 84 Date d'inscription Statut Contributeur Dernière intervention -
arth Messages postés 84 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir j au eu un petit problème dans mon code java , je travaille avec l IDE eclipse et des que je lance l exécution voila l erreur kil m affiche
Exception in thread "main" java.lang.StackOverflowError
at pack3.cellule.<init>(cellule.java:8)
je précise kil s agit d une erreur dans ma classe cellule sur la ligne 8,voila le petit bout de code qui fait erreur :
package pack3;
public class cellule {
private cellule suivante ;
private int contenu;
public cellule()// créer une cellule et initialiser
// son contenu a 0 et son pointeur svt a null
{cellule c =new cellule();
c.suivante=null;
c.contenu=0;
}
je vous remercie d avance
Exception in thread "main" java.lang.StackOverflowError
at pack3.cellule.<init>(cellule.java:8)
je précise kil s agit d une erreur dans ma classe cellule sur la ligne 8,voila le petit bout de code qui fait erreur :
package pack3;
public class cellule {
private cellule suivante ;
private int contenu;
public cellule()// créer une cellule et initialiser
// son contenu a 0 et son pointeur svt a null
{cellule c =new cellule();
c.suivante=null;
c.contenu=0;
}
je vous remercie d avance
2 réponses
-
Euh juste une question pourquoi tu appelles une cellule dans une autre cellule?
parce que je suppose que dans un code extérieur tu fais un cellule pipo = new cellule();
Donc à quoi te sers dans ton constructeur de mettre cellule c =new cellule(); ?
Donc je verrais la classe cellule comme :
package pack3; public class cellule { private cellule suivante ; private int contenu; public cellule()// créer une cellule et initialiser // son contenu a 0 et son pointeur svt a null { suivante=null; c.contenu=0; }
Ensuite voit si ton problème se pose toujours.-
-
Oui comme ça.
Tu pourrais donner le code qui accède à ta fonction cellule?
Hormis ça sinon je vois pas ce qui pourrait causer le StackOverFlow, à moins que ton code externe qui appelle la classe cause lui le problème.
PS : Bien vu JeanGilles, en effet je pense que le problème vient de là aussi, je viens d'y penser, on appelle la classe Cellule, qui elle même s'appelle, donc appel à la même classe qui s'appelle à l'infini, c'est sur que le StackOverFlow il est pas loin ... -
voila le code ki appelle cette fction
package pack3;
public class liste extends cellule {
private cellule debut;
private int taille;
public liste ()
{//cree une liste vide
debut=null;
taille=0;
}
public liste (cellule c)//cree 1 liste contenant c en tete
{
this.debut = c;
this.taille++;
}
public boolean isEmpty()
{
return debut==null;
}
public cellule getFirst() {
return this.debut;
}
public void addFirst(int elem)//insere une cellule de elem
{
cellule c= new cellule(elem,this.debut);
this.taille++;
}
je vous remercie -
-
-
Ton problème vient effectivement de là :
t'as un appel récursif sur le constructeur de cellule, et un moment, ca "déborde" et génère un StackOverflow