Java.lang.StackOverflowError avc eclipse

Fermé
minoucha-z Messages postés 3 Date d'inscription samedi 17 avril 2010 Statut Membre Dernière intervention 17 avril 2010 - 17 avril 2010 à 00:21
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 17 avril 2010 à 01:26
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
A voir également:

2 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 avril 2010 à 00:48
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.
1
minoucha-z Messages postés 3 Date d'inscription samedi 17 avril 2010 Statut Membre Dernière intervention 17 avril 2010
17 avril 2010 à 00:55
ben g fait s que tu ma suggérer mais le problème persiste toujours ,euhhh juste une autre question on exécute ainsi run ---> run as --->java application ?? c comme sa ??
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 avril 2010 à 00:58
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 ...
0
minoucha-z Messages postés 3 Date d'inscription samedi 17 avril 2010 Statut Membre Dernière intervention 17 avril 2010
17 avril 2010 à 01:04
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
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
17 avril 2010 à 01:26
Je pense d'après ton code que tu essaies de faire des listes chaînées, hors en Java la notion de pointeur n'existe pas comme en C++ par exemple.

Expose nous plutôt ce que tu veux faire, mais à mon avis je pense ne pas en être loin.
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
17 avril 2010 à 00:54
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
0