Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comparaison valeurs tab string dans boucle while

    19 janvier 2017 à 12:30:21

    Bonjour,

    Je suis débutante en java et j'aimerais à la fin du code que j'ai posté ci-après réutiliser les valeurs déclarées dans le tab pour les comparer avec la valeur rentrée au clavier par l'utilisateur et reposer la question de rentrer la mise complémentaire en boucle si jamais la saisie de l'utilisateur ne correspond pas exactement avec une des valeurs du tableau. Pourriez-vous m'aider et me proposer une autre solution plus simple si jamais je ne suis pas partie sur une bonne logique?

    Merci d'avance

    /déclaration du tableau contenant les éléments possible pour miser

    String tab[] = {"1 douzaine", "2 douzaine", "3 douzaine", "noire", "rouge","1ère colonne","2ème colonne","3ème colonne","pair","impaire",};

    //choix d'une mise complémentaire

    do {

    System.out.println ("Souhaitez-vous choisir une mise complémentaire?") ;

    miseComp = sc.nextLine().charAt(0);

    }while (miseComp != 'N' && miseComp != 'O');

    if (miseComp!='O'){

    continuermiseComp=true;

    }

    if (miseComp!='N'){

    do {

    System.out.println("Rentrez la mise complémentaire parmi les éléments suivants : rouge, noir, pair, impair, 1 douzaine, 2ème douzaine, 3ème douzaine, 1ère colonne, 2ème colonne, 3ème colonne ");

    String choixMise = sc.nextLine();

    }while(choixMise != tab);

    • Partager sur Facebook
    • Partager sur Twitter

    Elodie 

      19 janvier 2017 à 15:31:28

      Bonjour,

      Pour comparer des String, il faut utiliser la méthode equals, pas ==.

      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2017 à 17:11:00

        Bonjour,

        Merci pour la réponse :). J'ai essayé le code ci-après dans le while mais ce n'est pas encore ça puisque ça boucle indéfiniment même si je rentre une valeur comprise dans le tableau. N'hésitez pas à me donner d'autres suggestions!

        if (miseComp!='N'){

        for (i=0; i<tab.length; i++) {

        do {

        System.out.println("Rentrez la mise complémentaire parmi les éléments suivants : rouge, noir, pair, impair, 1 douzaine, 2ème douzaine, 3ème douzaine, 1ère colonne, 2ème colonne, 3ème colonne ");

        String choixMise = sc.nextLine();

        }while (!(tab[i].equals(choixMise)));

        • Partager sur Facebook
        • Partager sur Twitter

        Elodie 

          19 janvier 2017 à 18:20:40

          melisandria1987 a écrit:

          Bonjour,

          Merci pour la réponse :). J'ai essayé le code ci-après dans le while mais ce n'est pas encore ça puisque ça boucle indéfiniment même si je rentre une valeur comprise dans le tableau. N'hésitez pas à me donner d'autres suggestions!

          if (miseComp!='N'){

          for (i=0; i<tab.length; i++) {

          do {

          System.out.println("Rentrez la mise complémentaire parmi les éléments suivants : rouge, noir, pair, impair, 1 douzaine, 2ème douzaine, 3ème douzaine, 1ère colonne, 2ème colonne, 3ème colonne ");

          String choixMise = sc.nextLine();

          }while (!(tab[i].equals(choixMise)));

          ça boucle sans arrêt car tu fais une boucle qui commence à i=0, autrement dit tu reste dans ta boucle do{} while(); tant que tu n'as pas rentré la valeur tab[0] (et non pas une valeur quelconque du tableau), or ce n'est pas ce que tu souhaites.

          J'aurais procédé différemment en mettant dans ton while une fonction qui renvoie un booléan (renvoie true dés que tu trouves le bon mot, si après avoir tout parcouru le bon mot n'est pas trouvé alors renvoie false) :

          do {

          ////

          } while (! appartient(choixMise))

          Avec la fonction appartient :

          public static boolean appartient (String choixMise) {

             for (int i = 0; i < tab.length; i++) {

                if (choixMise.equals(tab[i]) { return true;}

            }

          return false;

          }

          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2017 à 1:46:19

            J'aurais procédé différemment en mettant dans ton while une fonction qui renvoie un booléan (renvoie true dés que tu trouves le bon mot, si après avoir tout parcouru le bon mot n'est pas trouvé alors renvoie false) :

            do {

            ////

            } while (! appartient(choixMise))

            Avec la fonction appartient :

            public static boolean appartient (String choixMise) {

               for (int i = 0; i < tab.length; i++) {

                  if (choixMise.equals(tab[i]) { return true;}

              }

            return false;

            }

            Complètement d'accord avec ce code, si tu réalisé ça, tout devrait fonctionner comme sur des roulettes 

            • Partager sur Facebook
            • Partager sur Twitter
              20 janvier 2017 à 10:38:52

              Merci pour l'aide, c'est parfait!
              • Partager sur Facebook
              • Partager sur Twitter

              Elodie 

              Comparaison valeurs tab string dans boucle while

              × 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