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

Collection et Stream Java Discussion :

Problème avec un ArrayList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Par défaut Problème avec un ArrayList
    Voilà 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, et je pense que le problème doit pourtant pas être très dur


    Voici mes classes.

    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
    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;
    	}
    }
    --------------------------------------------------------------------------------------------------------------------------
    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
     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;
    		}
    --------------------------------------------------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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;
    	}

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 110
    Par défaut
    ta solution 2 est bonne.

    tu as juste une erreur de "password" dans ton test. ne met pas de guillemet sinon c'est une chaine "password" et pas la variable password.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (int i =0 ; i <=  listeJoueurs.size(); i++){
    	if ((listeJoueurs.get(i).getPassword(login)).equals(password)){
    		trouve=true;
     
    	}
    }
    ajoute un break; pour sortir de ta boucle quand tu as trouvé.
    Et un while serait plus propre.

  3. #3
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Hello,

    T'as un piti problème d'algo là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String getPassword(String login){
    	return this.monPassword;
    }
    Tu passes "login" en paramètre mais tu ne t'en sers pas.

    Voilà à quoi devrait ressembler ta classe Joueur (avec des accesseurs standards).

    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
     
    class Joueur {
        String login;
        String password;
     
        public Joueur() {
            this(null, null); // préférer le passage par le constructeur ayant le plus de paramètres
        }
        public Joueur(String login, String password) {
            super();
            this.login = login;
            this.password = password;
        }
        public String getLogin() {
            return this.login;
        }
        public String getPassword() {
            return this.password;
        }
    }
    Sinon pour la méthode de vérif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static final boolean VerifIdentiteJoueur(String login, String password) throws RemoteException{
        boolean trouve = false;
        for (Joueur joueur : listeJoueurs) {
            if (login.equals(joueur.getLogin()) && password.equals(joueur.getPassword())) {
                trouve = true;
                break;
            }
        }
        return trouve;
    }
    Mais t'aurais presque meilleur temps de stoquer tes joueurs dans une Hashmap avec comme clé le login, ça évitera de parcourir la liste.

    Et si tu fais des boucles for en Java5, autant profiter des nouveautés avec la syntaxe du foreach comme ci-dessus.

    EDIT: grilled

Discussions similaires

  1. Problème avec un ArrayList et attribut String
    Par gelinp dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 08/06/2013, 14h35
  2. Problème avec une ArrayList
    Par dutty_pi dans le forum JDBC
    Réponses: 2
    Dernier message: 22/03/2012, 07h37
  3. Problème avec des ArrayList
    Par pony99 dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 22/12/2011, 18h00
  4. Problème avec ArrayList <String>
    Par fiphi dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 29/08/2006, 09h30
  5. [Swing] Problème avec un bean et un arraylist
    Par kikoufr dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 30/09/2004, 09h08

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