IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème méthode recrutement


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut Problème méthode recrutement
    Salut
    j'ai une question a vous poser car j'ai un petit probleme dans mon code, d'ailleurs le voici :
    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
     
    class Entreprise {
       Cellule chef;
     
       public Entreprise() {
          this.chef = null;
       }
     
       public Entreprise(Employe e) {
          this.chef = new Cellule(e);     
       }
     
       public void changerChef(Employe empi) {
          Cellule c1 = new Cellule(empi);
          c1.suivante = this.chef;
          this.chef = c1;
       }
     
       public void ajout(Employe empi) {
          Cellule c1 = new Cellule(empi);
          if(this.chef != null) {
             c1.suivante = this.chef.suivante;
             this.chef.suivante = c1;
          }
          else {
             this.chef = c1;
          }
       }
     
       public void affiche() {
          for(Cellule c = this.chef; c != null; c = c.suivante) {
             c.emp.affiche();
          }                   
       }
     
       public void recrute(Employe empi) {
          Cellule c1 = new Cellule(empi);
          for(Cellule c = this.chef; c != null; c = c.suivante) {
             if(c.suivante == null) {
                c.suivante = c1;
             }
          }
       }    
     
       /*public void augmentation() {
          for(Cellule c = this.Chef; c != null; c = c.suivante) {
       }*/
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Cellule {
       Employe emp;
       Cellule suivante;
     
       public Cellule(Employe e) {
          this.emp = e;
          this.suivante = null;
       }
    }
    Voilà, j'ai donc deux classes, entreprise et cellule (j'ai aussi une classe employé mais elle n'est pas utile ici je pense) et j'ai un probleme au niveau de la méthode recrute(), le probleme est qu'elle ne marche pas ! Je veux en fait ajouter un employer a mon entreprise, qui se situera à la FIN de celle - ci (c'est - a - dire derriere tous les autres employers). Quand j'execute, il me semble que la boucle boucle indéfiniment car rien ne s'affiche.

    Voilà merci de votre aide

  2. #2
    Membre averti Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Points : 333
    Points
    333
    Par défaut
    tout d'abord je te conseille de mettre "suivante" en private dans la classe Cellule et de faire une methode getSuivante() et setSuivante() .
    Pour ajouter à la fin de la liste je ferais ça :
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public void recrute(Employe empi) {
    		Cellule c1 = new Cellule(empi);
    		Cellule c = this.chef;
    		while(c.getSuivante()!=null)
    		{
    			c=c.getSuivante();
    		}
    		c.setSuivante(c1);
    	}

    Et je n'ai pas trop compris ce que tu veux faire de différent dans la méthode ajout et la méthode recrute.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse , ça fonctionne mais je ne comprends pas pourquoi mon for ne marche pas, c'est la même chose non?
    En fait la méthode ajout() permet de rajouter une cellule employé juste après la cellule chef, tandis que recrute() la place à la fin.
    Et je suis d'accord avec toi pour le private sur suivante mais on me demande de laisser l'attribut tel quel donc bon (de toute facon après il ne me sert plus puisque la fonction ajout() le remplace).

  4. #4
    Membre averti Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Points : 333
    Points
    333
    Par défaut
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       public void recrute(Employe empi) {
          Cellule c1 = new Cellule(empi);
          for(Cellule c = this.chef; c != null; c = c.suivante) {
             if(c.suivante == null) {
                c.suivante = c1;
             }
          }
    }

    Je pense que ton problème est que "c != null " est toujours vrai puisque si c.suivante = null , tu rajoute une cellule , donc tu rajoute ta cellule à la derniere position mais retourne dans la boucle for et la ré ajoute à la fin .

    Edit : pour régler ton problème tu peux utiliser soit la methode que je t'ai donnée , soit ajouter un "break" dans le if pour sortir de la boucle for

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    Merci! ca me parait évident maintenant , j'avais pas fait attention, il me suffisait donc de rajouter un break; apres c.suivante = c1;

    Merci de ton aide (rapide!). Problème résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème méthode Imaging.GetListItems
    Par kince dans le forum SharePoint
    Réponses: 6
    Dernier message: 01/06/2007, 20h27
  2. VBA-E Problème méthode .find
    Par popo68 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2007, 10h14
  3. [EJB2.1 Entity] Problème méthode findAll() avec Jonas 4.7.4
    Par mixouille dans le forum Java EE
    Réponses: 1
    Dernier message: 28/07/2006, 12h06
  4. Problème méthode NUM
    Par Pfeffer dans le forum 4D
    Réponses: 2
    Dernier message: 10/07/2006, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo