Problème (simple ??) avec un ArrayList [Résolu]

Le_Novice 3 Messages postés vendredi 20 janvier 2006Date d'inscription 3 mars 2007 Dernière intervention - 3 mars 2007 à 22:10 - Dernière réponse : Twinuts 5272 Messages postés dimanche 4 mai 2003Date d'inscription 3 août 2018 Dernière intervention
- 4 mars 2007 à 00:45
Bonjour,
J'ai un problème avec la mise en place d'Arraylist et son parcours

Pour simplifier, j'utilise 3 classes (ici amputer de lignes peu "importantes")  :
- une classe Joueur
- une classe MockDonnees : où l'on définit un ArrayList listeJoueurs de type Joueur
- une classe Authentification : où l'on fait appel à une méthode Inscription (qui fonctionne) et une méthode Connexion (faisant appel à une méthode de MockDonnées)

L'ajout d'un joueur dans l'ArrayList s'effectue parfaitement (j'ai pu le vérifier)

Par contre, je galère (et je pense pourtant que c'est simple) pour développer la méthode VerifIdentiteJoueur(login, motpasse).
Elle me retourne toujours false, alors qu'elle devrait retourner vrai

J'ai essayé avec les fonctionnalités :

-  listeJoueurs.containes(monObjetJoueur) avec monObjetJouer = new Joueur(login, mot de passe) et j'obtient toujours flase
- la  méthodeslisteJoueurs.get(i).getPassword(login)).equals("password"))  et j'obtiens toujours false
Je ne sais pas comment faire et c'est important pour moi de trouver la solution. Peut être est-je mal utiliser les fonctionnalités détaillés précédemment. Merci beaucoup de m'aider pour que ma méthode VerifIdentiteJoueur fonctionne

Voici mes classes.

public class Joueur extends UnicastRemoteObject implements JoueurInterface {

    Score monScore = new Score();
    String loginJoueur;
    String monPassword;
        
    public Joueur() throws RemoteException {
        super();
    }
    
    public Joueur(String login, String pass) throws RemoteException {
        loginJoueur = login;
        monPassword = pass;
    }

    public String getPassword(String login){
        return this.monPassword;
    }
}

--------------------------------------------------------------------------------------------------------------------------
public class MockDonnees {
    static ArrayList < Joueur > listeJoueurs = new ArrayList < Joueur >();
    
    public MockDonnees() throws RemoteException {
    }
    
    public static final void AjoutJoueur(String login, String password) throws RemoteException{
        Joueur monJoueur = new Joueur(login, password);
        listeJoueurs.add(monJoueur);
    }
    public static final boolean VerifIdentiteJoueur(String login, String password) throws RemoteException{
        boolean trouve=false;
        /* Solution 1 envisagé mais qui ne fonctionne pas
        Joueur monJoueur = new Joueur(login, password);
        trouve=listeJoueurs.contains(monJoueur);
        */
        
        /* Solution 2 envisagé mais qui ne fonctionne pas
        /*for (int i =0 ; i <=  listeJoueurs.size(); i++)
        {
            if ((listeJoueurs.get(i).getPassword(login)).equals("password")){
                trouve=true;
            }
        }
        */

        return trouve;
        }
--------------------------------------------------------------------------------------------------------------------------------
public class Authentification extends UnicastRemoteObject implements
        AuthentificationInterface {

    public Authentification() throws RemoteException{
    }
    public void Inscription(String login, String password) throws RemoteException {
        MockDonnees.AjoutJoueur(login, password);
    }
    
    public boolean Connexion(String login, String password) throws RemoteException {
        boolean cnnx=MockDonnees.VerifIdentiteJoueur(login, password);
        return cnnx;
    }
        
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 3 mars 2007 à 22:43
3
Merci
Salut:

public class Joueur {
   String loginJoueur;
   String monPassword;
   // ...
   
   // Surchargé notre méthode equals () pour répondre à nos besoins
   public boolean equals (Object o) {
      if (!(o instanceof Joueur))
         return false;

      Joueur player = (Joueur)o;
   
      if (this.loginJoueur == player.loginJoueur &&
          this.monPassword == player.monPassword)
         return true;
      
      return false; 
   }

}
__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certaines personnes paraissent brillantes jusqu'à ce qu'elles commencent à parler .../FONT>

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 3 mars 2007 à 22:37
0
Merci
Salut:

Une petite explication à propos du valeur de retour de la méthode contains qui est toujours false.

Comme tu n'as pas sruchargé la méthode equals de la classe de base Object, ta classe Joueur utilises cette dernière et du fait que la méthode contains utilises implicitement cette méthode elle DOIT retourner false dans notre cas car elle fait un test d'égalité sur les références pas sur l'égalité des champs.

__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certaines personnes paraissent brillantes jusqu'à ce qu'elles commencent à parler .../FONT>
Commenter la réponse de Ombitious_Developper
Le_Novice 3 Messages postés vendredi 20 janvier 2006Date d'inscription 3 mars 2007 Dernière intervention - 3 mars 2007 à 22:55
0
Merci
OK ça semble marcher, merci beaucoup
Et en plus, l'explication est très instructive.
Commenter la réponse de Le_Novice
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 3 mars 2007 à 22:59
0
Merci
Merci il faut juster jetter un coup d'oeil sur la documentation elle contient tout ....


__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certaines personnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
Commenter la réponse de Ombitious_Developper
Twinuts 5272 Messages postés dimanche 4 mai 2003Date d'inscription 3 août 2018 Dernière intervention - 3 mars 2007 à 23:07
0
Merci
Salut,

je suis absolument contre la réponse de [auteurdetail.aspx?ID=237842 Ombitious_Developper]en java il ne faut JAMAIS faire this.loginJoueur == player.loginJoueur pour comparer 2 chaines de char mais utiliser equals ou compareTo sinon tu risque à 90% d'obtenir tout sauf ce que tu veux.....

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 3 mars 2007 à 23:22
0
Merci
Salut:



C'est juste une faute d'inattention, je n'ai pas fait attention au type des attributs c'est tout.



Le plus important est que l'idée est exprimée.




__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
Commenter la réponse de Ombitious_Developper
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 3 mars 2007 à 23:24
0
Merci
Hey, n'oublies pas c'est toi qui dis toujours "la faute est humaine"
__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
Commenter la réponse de Ombitious_Developper
Twinuts 5272 Messages postés dimanche 4 mai 2003Date d'inscription 3 août 2018 Dernière intervention - 3 mars 2007 à 23:52
0
Merci
Salut,

bref j'ai dis ce que j'avais à dire.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 4 mars 2007 à 00:17
0
Merci
Salut:

Tu as parfaitement raison on ne pourra pas donner des choses fausses aux gens, mais comme on est en cours de route certaines détails nous échappent ...




__________________________________________________________
A.B. :  La lumière voyage plus vite que le son. C'est pourquoi certainespersonnes paraissent brillantes jusqu'à ce qu'elles commencent à parler ...
Commenter la réponse de Ombitious_Developper
Twinuts 5272 Messages postés dimanche 4 mai 2003Date d'inscription 3 août 2018 Dernière intervention - 4 mars 2007 à 00:45
0
Merci
Salut,

je te l"accorde

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.