DEBUTANTE JAVA ET G UN PB AIDEZ MOI SVP

Résolu/Fermé
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 - 7 avril 2010 à 11:36
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 8 avril 2010 à 11:33
salut,
En faite, j'ai une classe mere dont le nom est "Employe", cette classe a 2 classe filles "Enseignant" et "AgentAdministratif".
le travail demandé c'est de faire une methode rechercher qui recoit en parametre un Employe et qui verifie si cet employé existe ou nn
s'il existe elle le retourne sinon elle retoune null
cette methode est inclu ds la classe "Institut" , cette classe contient un tableau d'employés.
mon probleme que je n'arrive pas à comprendre comment je vé retourner l'employé quand il existe.
voici l'enoncé de l'exercice :

chercherEmploye : retourne l'employé s'il existe, null sinon. Pour utiliser cette
fonctionnalité, il faudra fournir soit le numéro de matricule de l'employé recherché, soit son
nom et son prénom.
et voila mon bout de code :( :

void ajouterEmploye(Employe e)
{
Employe emp= new Employe();
emp=null;
int i=0;
while ((i<this.Employes.length)&&(this.Employes[i].numeroDeMatricule!=e.numeroDeMatricule)||((this.Employes[i].getNomEmploye()==e.getNomEmploye())&&(this.Employes[i].getPrenomEmploye()==e.getPrenomEmploye())))
{
i++;
}
if (i<this.Employes.length)
{
// je met quoi iciii SVP
}

return emp;
}


Merci d'anvance ;)
A voir également:

2 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
Modifié par kij_82 le 7/04/2010 à 12:50
Bonjour,


Cela me semble assez évident comme réponse non ?
Tu demande qu'est ce qu'il faut retourner alors que tu précise bien toi même que ta méthode doit retourné l'objet Employé en question s'il est trouvé.

C'est donc qu'il te faut retourné l'objet Employé à la position i si tu l'a trouvé.

Par contre, au niveau des initialisations en début de méthode, il y a des choses inutiles. (pourquoi faire une variable de type Employé si tu n'y stock pas / lie pas un objet, autant supprimer cette partie donc)

Qui plus est, tes tests dans la boucle while sont faux.
Si je les traduis, actuellement ils donnent ceci :

"Tant que : i inférieur à la taille du tableaux des employés
Et que : le numéro de matricule de l'employé à l'index 'i' est différent de celui recherché
Ou que : le nom et le prénom de l'employé à l'index 'i' sont les mêmes que celui recherché
Alors j'incrémente le compteur 'i'"

La partie en gras n'est pas bonne, c'est le contraire que tu souhaites : tant que les critères de recherche ne sont pas validé, je continue ma boucle et mon incrémentation.

Enfin, si tu lis bien, l'ordre des && et || dans tes conditions ne sont pas correct. Du moins il manque des parenthèses à certains endroits, ce qui fait que l'ordre de priorité de tes conditions n'est pas celui escompté (&& aura toujours la priorité sur || si tu n'y mets pas des parenthèses pour forcer des conditions à s'associer)

Pour finir, parfois tu utilise ce qu'on appelle des 'getters' pour récupérer la valeur de certaines propriété d'un objet 'Employé', parfois non.
Le mieux, pour plus de clareté, dans toute classe java, il faut mettre les propriétés en 'private' et mettre en place des accesseurs (getters et setters, getters te permettant de récupérer, setters permettant de mettre à jour la propriété) Ainsi, dans ton code, plutôt que de faire "e.numeroMatricule", créé un getter pour le numéro de matricule de ta classe Employé (si pas déjà fait), et utilise le : "e.getNumeroMatricule()", comme tu as fais pour "e.getPrenomEmploye()" par exemple.
Il faut toujours être homogène dans ce que l'on fait pour que notre code soit plus claire pour les autres.

Voici donc un code un peu plus propre et qui (sauf erreur de ma part) devrait être bon (non vérifié):

void rechercherEmploye(Employe e)   
{   
int i=0;   
while (   
   i<this.Employes.length && ( this.Employes[i].numeroDeMatricule != e.numeroDeMatricule || (this.Employes[i].getNomEmploye() != e.getNomEmploye() && this.Employes[i].getPrenomEmploye() != e.getPrenomEmploye())) )   
{   
i++;   
}   
if (i<this.Employes.length)   
{   
 return this.Employes[i];   
}   

return null;   
}    



~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
1
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 15
7 avril 2010 à 13:39
merciiiiiiiiiiii bcp pour votre aide ca fonctionne très bien ;)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
8 avril 2010 à 11:33
Re,

Ok, j'ai passé ta discussion au statu "résolu", il faut penser à le faire soi-même la prochaine fois.
Peux-tu également plussoyer ma réponse de manière à ce qu'elle apparaissent en premier puisqu'elle répond à ton problème. (je ne peux le faire moi-même)

Merci.
0
rimounatn Messages postés 93 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 7 septembre 2010 15
7 avril 2010 à 11:49
DSL le nom de la methode est rechercherEmploye et elle retourne un employe
0