Le_Novice
Messages postés3Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention 3 mars 2007
-
3 mars 2007 à 22:10
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
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 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);
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 22:43
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>
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 22:37
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>
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 22:59
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 ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 3 mars 2007 à 23:07
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 ..."
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 23:22
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 ...
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 3 mars 2007 à 23:24
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 ...
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 4 mars 2007 à 00:17
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 ...