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

avec Java Discussion :

fonction Recherche


Sujet :

avec Java

  1. #1
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut fonction Recherche
    Bonjour, j'aimerai ajouter une fonction recherche à mon programme

    En faisant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Canari unCanari = lecture.getCanari(nomDuCanari);
    Je n'arrive à récupérer que le premier canari de mon fichier.xml
    S'il y en a d'autre, je n'arrive pas à le récupérer

    Annee.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    [...]
    	   public Canari getCanari(String nomCanari) { 
               for(Iterator ite = listeCanaris.iterator();ite.hasNext();){ 
                   Canari unCanari = (Canari) ite.next(); 
                   if(nomCanari.equals(unCanari.getNom())){ 
                   return unCanari; // canari trouvé on le renvoie 
               } 
            } 
            // si on trouve pas ??? 
            System.out.println("Pas de canari du nom de "+nomCanari+" trouvé dans le fichier "+file+ "!!!"); 
            return null; 
           } 
    [...]
    help please

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Ta recherche est codee comme il faut, et doit marcher en theorie.
    Si elle ne te renvoie pas de canari, c'est que ta chaine ne correspond a aucun nom.
    Essaie de voir si il n'y a pas des "\n" ou des " " invisibles caches dans le canari.getNom() en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(unCanari.getNom().indexOf(nomCanari) != -1) // si unCanari.getNom() contient nomCanari (et non pas equals)
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    hello... de retour

    Les vacances sont fini

    J'arrive bien à trouver un canari mais si par exemple, j'ai un autre canari dans mon fichier xml, il arrête ses recherches après avoir trouvé le premier

  4. #4
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public Canari getCanari(String nomCanari) { 
                for(Iterator ite = listeCanaris.iterator();ite.hasNext();){ 
                    Canari unCanari = (Canari) ite.next(); 
                    if(nomCanari.equals(unCanari.getNom())){ 
                    return unCanari; // canari trouvé on le renvoie 
                } 
             }
    C'est normal puisque tu fais un return dès que tu as trouvé un canari...
    Pour en récupérer plusieurs, il faut les stocker dans une structure et renvoyer la totalité...
    Snoop

  5. #5
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Genre "HashMap" ?

  6. #6
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    un ArrayList pourrait faire l'affaire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public ArrayList getCanari(String nomCanari) { 
    	    ArrayList array = new ArrayList();
                for(Iterator ite = listeCanaris.iterator();ite.hasNext();){ 
                    Canari unCanari = (Canari) ite.next(); 
                    if(nomCanari.equals(unCanari.getNom())){ 
    		array.add(unCanari);
                } 
    	   return array;
             }
    Snoop

  7. #7
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    ok merci, je vais travailler sur l'arrayList

    Thanks

  8. #8
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Pourquoi ?
    tu as plusieurs canaris avec le même nom ?

  9. #9
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    non , en fait j'aimerai pourvoir récupérer tous les canaris mâle par exemple.

    Je vais aussi utiliser ce type de fonction dans l'autre partie de mon programme

    En gros, je vais avoir un fichier.xml qui permet de savoir quel canari est dans la cage x à un instant t.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <cage1>
    <canari>titi</canari>
    </cage>
    <cage2>
    <canari>GrosMinet</canari>
    </cage>
    <cage1>
    <canari>mimie</canari>
    </cage>
    j'aimerai par exemple récupérer tous le canari de la cage 1

  10. #10
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Ah ! cela me rassure (pauvre canaris)

    Je ne comprend pas le fichier XML que tu donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <cage1> 
    <canari>titi</canari> 
    </cage> 
    <cage2> 
    <canari>GrosMinet</canari> 
    </cage> 
    <cage1> 
    <canari>mimie</canari> 
    </cage>
    est ce que tu souhaite gérer tes cages (comme contenant une liste de canaries)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <cages>
        <cage numero = 1> 
            <canari>titi</canari> 
            <canari>mimie</canari> 
        </cage>
        <cage numero = 2> 
            <canari>GrosMinet</canari> 
        </cage>
    </cages>
    ou concidérer que tout canari devant être dans une cage , la cage est un attribut de canari

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <canari>
       <nom>minie</nom>
       <sexe>mâle</sexe>
       <stam>1212</stam>
       <bague>58</bague>
       <year>2004</year>
       <cage>1</cage>
    </canari>

  11. #11
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Le problème c'est qu'un canari reste dans l'elevage 1 an ,après il est revendu sauf mâle reproducteur

    Je pensé plus à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    <Elevage>
      <Cage>
        <nomCage>cage1</nomCage> 
        <canari>titi</canari> 
      </Cage>
    - <Cage>
        <nomCage>cage1</nomCage> 
       <canari>mimie</canari> 
      </Cage>
    </Elevage>
    Un fichier unique qui permet de dire tel canari est dans tel cage.
    Ensuite, je récupére (recherche) tous les canari de la cage 1 par exemple et j'afficher le résultat dans un cage que j'aurai matérialisé par un rectangle dans IHM .

    Une cage peut contenir X canari (Mâle+Femelle+Y jeunes)
    Une volière peut contenir W canari (de 0 à 999)

    Je souhaite donc différencier le type de conteneur aussi ! Volière ou Cage

    Le code pour générer un fichier xml et affecter un canari à une cage est déjà réalisé, il me reste plus qu'a rechercher tous les canaris dans appartenant à la cage n et afficher le résultat.

    Si je ne suis pas clair, n'hésites pas .... et surtout dis moi si je fais bien de travailler avec un xml indépendant du reste

  12. #12
    Membre actif Avatar de snoop
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 354
    Points : 294
    Points
    294
    Par défaut
    tu pourrais aussi présenter les choses ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <Elevage> 
       <canari cage="cage1">titi</canari> 
       <canari cage="cage1">mimie</canari>
       <canari cage="cage2">GrosMinet</canari> 
     </Elevage>
    Snoop

  13. #13
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    effectivement !

    Pour le moment, je ne sais pas encore le faire mais je pense que je dois faire une modif dans le fichier mapping

  14. #14
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    ne serait'il pas mieux de dire dans un fichier unique que contient les cages et volières
    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
     
    <Elevage> 
        <Cage nom="Cage 1"> 
            <canariMale>titi</canariMale> 
            <canariFemelle>mimie</canariFemelle> 
            <canariEnfant>GrosMinet</canariEnfant> 
    ......
            <canariEnfant>pioupiou</canariEnfant> 
        </Cage> 
    ......
        <Voliere nom="Voliere 1">
            <canari>toto</canari> 
    ......
            <canari>tutu</canari> 
        </Voliere>
    ......
    </Elevage>
    comme tu as un objet pour tes cage, un pour les volières ... et quand tu veux le detail d'un canari (pour la cage 1 par exemple) tu le cherche dans l'annee par la méthode getCanari(nom) qui renvoie un canari

  15. #15
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Ca me semble correcte ! Sauf que je suis un peux limite pour ajouter un canari dans la cage 1 par exemple.
    Avec Castor, je sais maintant ajouter facilement une cage par exemple ou un canari.

    Mais je ne sais pas ajouter un canari dans une cage comme tu le fais!

  16. #16
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    la seule chose, il faut lier une cage(voliere) avec une année :
    - cela peut être un attibut (qui va dire que cette cage contenait telle annee tels canaris)
    - cela peut être dans le nom (considérer que le cage bleue a pour nom bleue2004 en 2004 ou bleue2005 en 2005)
    - cela être autre chose...

    ensuite
    dans ta classe Cage tu stocke les noms via le flux
    et elle a deux méthodes : par exemple pour le canariMale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public String getNomCanariMale(){
    	return canariMale; // ce qui est dans le flux
    }
     
    public Canari getNomCanariMale(){
       //fait le lien entre le nom et les infos du canari
    	return Annee.lire(2004).getCanari(getNomCanariMale()); 
    }
    et l'affectation se fait par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //dans la cas du chargement via castor
    public void setNomCanariMale(String canariMale){
      this.canariMale=canariMale;
    }
     
    //dans le cas de la création 
    public void setCanariMale(Canari canariMale){
      setNomCanariMale(canariMale.getNom()); 
    }
    Essaie de te perfectionner avec les cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/

  17. #17
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    [edit]
    Etant donnée, que j'ai avancé un peu sur le sujet, je préfère ouvrir un autre post et delesté celui-ci.

    Grâce à votre vision, je change mon fusil d'épaule et je travail sur un autre schema pour stocker l'emplacement de mes canaris.
    Donc plus besoin de fonction recherche pour le moment... je reviendrai qaund même vers vous plus tard pour discuter d'une vraie fonction recherche mais pour autre chose.

    Merci pour votre aide
    [/edit]

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

Discussions similaires

  1. Fonction Recherche(google) et liens morts
    Par cyrille_ dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 4
    Dernier message: 06/01/2006, 12h43
  2. Réponses: 3
    Dernier message: 15/11/2005, 18h50
  3. [fonction] recherche de methode inutilisée
    Par frouge dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/03/2005, 13h37

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