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 :

[DEbutant] Utilisation Arraylist (indexof)


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [DEbutant] Utilisation Arraylist (indexof)
    Bonjour, j'espère que vous allez bien.

    alors voila mon problème, je n'arrive pas à utiliser la fonction indexof avec Arraylist.

    Je possède un main (maitre)
    2 classes (donneeclient(nom et prenom) et la liste)

    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
    49
    import javax.swing.JOptionPane;
     
    class Maitre{
    public static void main (String[]argument){
    String choixReponse;
    int choix;
    boolean triche=false;
    Liste clientActuel = new Liste();
    System.out.println();
    do
    {
    System.out.println();
    System.out.println("1) Ajouter un nouveau Client.");
    System.out.println("2) Identifier-vous manuellement avec la liste de nos Clients.");
    System.out.println("3) Supprimer un ou plusieurs profils de nos Clients.");
    System.out.println("4) Afficher le Client selectionne.");
    System.out.println("5) Fin du processus d'identification.");
    choixReponse=JOptionPane.showInputDialog(null,"Entrer votre choix:");
    System.out.println();
    choix=Integer.parseInt(choixReponse);
    switch (choix)
    {
    case 1:
    {
    clientActuel.Ajoute();
    break;
    }
    case 2:
    {
    clientActuel.Affiche();
    break;
    }
    case 3:
    {
    clientActuel.Supprime();
    break;
    }
    case 4:
    {
    clientActuel.Recherche();
    break;
    }
    default:
    System.out.println("Mauvais chiffre. Veuiller recommencer votre entree:");
    triche=true;
    break;
    }}
    while(triche==false);
    }}


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import javax.swing.JOptionPane;
    public class DonneeClient {
    public String prenom, nom;
    public DonneeClient(){
    prenom=JOptionPane.showInputDialog("Entrer votre prenom");
    nom=JOptionPane.showInputDialog("Entrer votre nom");
    }
    public void Affiche(int i){
    System.out.println(i+":");	
    System.out.println(nom);
    System.out.println(prenom);
    }}



    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
    import java.util.*;
    import javax.swing.JOptionPane;
    public class Liste {
    public ArrayList <DonneeClient> Total;
    public int longueur,i,presence;
    public String reponse;
    public boolean reponseBinaire;
    public Liste(){
    this.Total = new ArrayList <DonneeClient>(5);	
    }
     
    public void Ajoute(){
    this.Total.add(new DonneeClient());
     
    }
     
    public void Affiche(){
    longueur=Total.size();
    for(i=0;i<longueur;i=i+1)
    {
    DonneeClient Explicite= Total.get(i);
    Explicite.Affiche(i);
    System.out.println();
    }}
     
    public void Supprime(){
    longueur=Total.size();
    for(i=0;i<longueur;i=i+1)
    {
    DonneeClient Explicite= Total.get(i);
    Explicite.Affiche(i);
    reponse=JOptionPane.showInputDialog("Voulez vous supprimer ce profil? oui ou non");
    reponseBinaire=reponse.equalsIgnoreCase("oui");
    if(reponseBinaire == true)
    {
    Total.remove(i);
    }}
    }
     
    public void Recherche(){
    DonneeClient test = new DonneeClient();
     
    longueur=Total.size();
    int reponse;
    reponse=Total.indexOf(test);
    System.out.println(reponse);
    }}

    ici, j'ai beau mettre exactement le mème nom et prenom pour la construction de mon objet test que un objet crée précédemment et compris dans la liste Total, la réponse retournée est toujours égale à -1.

    Merci de votre aide et de votre compréhesnion, bonne journée.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    indexOf recherche une entrée dans la liste égale à l'argument. L'égalité dans ce cas étant celle vue par la méthode equals(Objet) des éléments de la liste. Comme tu n'a pas redéfini cette méthode, c'est la méthode par défaut qui est utilisée, méthode qui ne fait que comparer les instances:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DonneeClient test1 = new DonneeClient();
    test1.nom="bla";
    test2.prenom="blabla";
    DonneeClient test2 = new DonneeClient();
    test2.nom=test1.nom;
    test2.prenom=test2.prenom;
    test3=test2;
     
    test1.equals(test2) // false
    test2.equals(test3) // true
    Donc dans ton cas, redéfinir la méthode equals, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class DonneeClient {
        public String prenom, nom;
        public boolean equals(Object o){
            if (o instanceof DonneeClient){
                DonneeClient dc = (DonneeClient) o;
                return (dc.prenom.equals(prenom) && dc.nom.equals(nom));
            }
            return false;
        }
    ce code est bien sur à améliorer pour gérer les null, etc.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup gràce à vous ca marche!

    Bonne journée

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    n'oubliez pas de cliquer sur en bas de page

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

Discussions similaires

  1. [debutant]Utiliser friend method
    Par Battosaiii dans le forum Débuter
    Réponses: 4
    Dernier message: 06/11/2005, 11h23
  2. vaut il mieux utiliser ArrayList ou implémenter collection?
    Par irnbru dans le forum Framework .NET
    Réponses: 17
    Dernier message: 05/11/2005, 12h51
  3. [debutant]utilisation de bcp
    Par christophebmx dans le forum Outils
    Réponses: 2
    Dernier message: 19/08/2005, 09h47
  4. [Debutant] Utilisation de la touche "Entrée"
    Par Dextro dans le forum Composants
    Réponses: 2
    Dernier message: 28/04/2005, 09h42
  5. [ArrayList] indexOf()
    Par phoebe dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 08/11/2004, 17h52

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