Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vecteur en Java

chercher dans un vecteur

    1 octobre 2009 à 14:31:33

    Bonjour :) ,
    j'ai un problème concernant la recherche d'un stagiaire dans un vecteur à partir de son nom
    j'ai réessayé avec trois méthodes mais aucun résultat
    voici mon code :

    for(int i=0;i<v.size();i++)
    {
    	System.out.println("entrer le nom de Stagiaire");
    
    	String name=buf.readLine();
    
    	stg=(Stagiaire)v.elementAt(i);
    
    	if(name==stg.getNom())
    	{ 
    		//stg.afficher_stagiaire();   //de la classe stagiaire
    		
    		//System.out.println(" "+v.get(i));  //de la classe vecteur
    		
    		//System.out.println(" "+stg.toString());  // la classe stagiaire
    	}
    }
    



    le code de la méthode afficher_stagiaire() est:

    public void afficher_stagiaire() throws IOException
    	{
    		System.out.println("le Matricule de Stagiaire est :"+mat);
    		System.out.println("le nom de Stagiaire est :"+nom);
    		System.out.println("le prénom de Stagiaire est :"+prenom);
    		System.out.println("l'age de Stagiaire est :"+age);
    		
    	}
    
    • Partager sur Facebook
    • Partager sur Twitter
      1 octobre 2009 à 14:56:33

      Les égalités ça se test avec la méthode equals et non "==", question d'emplacement mémoire. Sinon ta méthode ne boucle pas vraiment sur les éléments de ton vecteur en entier. Pour ça il faudrait plutôt sortir ton readLine de la boucle for et le mettre avant.
      • Partager sur Facebook
      • Partager sur Twitter
        1 octobre 2009 à 15:12:52

        Puisqu'on en est aux remarques :

        - Placer ta saisie dans la boucle n'a pas de sens (comme ça a été dit), ça devrait sans doute être à l'extérieur.
        - Le throws IOException de afficher_stagiaire() ne sert à rien si ce n'est à gêner le code appelant.
        - Tu peux déclarer ta collection en generic pour éviter le vilain cast (Stagiaire)v.elementAt(i).
        - Il vaut mieux utiliser une Map plutôt qu'une Liste pour faire des recherches d'égalité lorsque c'est possible.
        - On utilise pas un Vector si une ArrayList fait l'affaire.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          1 octobre 2009 à 15:15:58

          Il faut prendre des ArrayList et pas de Vector.
          Le Vector ne sert que pour les synchronisation multi-thread, mais bon les ArrayList peuvent aussi le faire.
          Les Vector sont encore présent dans JAVA uniquement pour la rétro compatibilité.

          Et pour ta question janulrich00001 a raison.
          Le == ne fait que testé les type primitif, pour les autre type (aka Class) le == ne teste que les pointeurs (enfin référances) par les objet en tant que tel.
          • Partager sur Facebook
          • Partager sur Twitter
            1 octobre 2009 à 20:47:10

            Je vous remercie infiniment,
            ça marche avec equals()
            je vous remercie pour vos réponses
            • Partager sur Facebook
            • Partager sur Twitter

            Vecteur en Java

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown