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   -
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

2 réponses

  1. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
     
    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
    1. minoucha-z Messages postés 3 Statut Membre
       
      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
    2. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
       
      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
    3. minoucha-z Messages postés 3 Statut Membre
       
      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
    4. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
       
      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
  2. jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
     
    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