Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java]Problème algorithmique

Sujet résolu
    4 mai 2007 à 11:53:01

    Salut à tous,

    Voilà j'ai un soucis avec une fonction qui en théorie devrait me renvoyer un true mais qui me renvoie finalament un false...

    System.out.println(this.currentRoom.contientMeuble("table"));


    /**
    import java.util.HashMap;
    import java.util.Set;
    import java.util.Iterator;
    import java.util.ArrayList;

    class Room
    {
        public String description;
        public HashMap listExit;
        public ArrayList listMeubles;
        public ArrayList listObjets;
        public boolean ouvert;

        /*........*/


         * Dit si un Meuble existe dans le tableau à partir de son nom
         * @param nomMeuble
         * @return
         */
        public boolean contientMeuble(String nomMeuble)
        {           
            Meuble unMeuble;
            //Parcourrir la liste des Meuble à la recherche du meuble demandé
            for (int i = 0; i < listMeubles.size(); i ++ )
                    {
                unMeuble = (Meuble) this.listMeubles.get(i);
               
                //Si le nom du meuble correspond à celui demandé
                    System.out.println(nomMeuble + " " + unMeuble.getNom());
                if(nomMeuble == unMeuble.getNom())
                {
                    //Alors retourner vrai
                    System.out.println(unMeuble.getNom());
                    return true;
                }
                    }
            /*Si l'on arrive au bout de la boucle,
            c'est que le meuble n'a pas été trouvé
            renvoyer null*/

            return false;
        }

        /*........*/

    }


    Aparement, on ne rentre jamais dans le if, pourtant et System.out.println(nomMeuble + " " + unMeuble.getNom()); affiche 'table table'...

    C'est bizarre.
    o_O

    Merci. ^^
    • Partager sur Facebook
    • Partager sur Twitter
      4 mai 2007 à 12:20:15

      Essaie ça :

      if(nomMeuble.equals(unMeuble.getNom()))
                  {
                      //Alors retourner vrai
                      System.out.println(unMeuble.getNom());
                      return true;
                  }
      • Partager sur Facebook
      • Partager sur Twitter
        4 mai 2007 à 13:55:50

        c'est simple :

        pour une raison qui m'est inconnu, on ne peut pas comparer aisément 2 string ensemble. on doit donc utiliser ceci :

        if( nomMeuble.equals(unMeuble.getNom()) )
        </span>

        oups, pas lue le 2e message >.<
        • Partager sur Facebook
        • Partager sur Twitter
        Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
          7 mai 2007 à 18:37:27

          Pour faire cela, autant utiliser un ArrayList<String> et appeler contains dessus ;)
          • Partager sur Facebook
          • Partager sur Twitter

          [Java]Problème algorithmique

          × 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