Partage
  • Partager sur Facebook
  • Partager sur Twitter

For dans for et comparaison

    2 août 2018 à 10:26:27

    Bonjour,

    Je souhaite faire un comparaison d'élément en java. J'avais idée de faire deux for imbriqués, mais je ne sais pas si c'est une bonne idée.

    Si personne 1 != conseiller, on quitte toute la boucle (la première boucle for, celle de personne1).

    Si personne 1 == conseiller, on fait un traitement.

         boolean isEquals = false;
            for (String personne1 : personne) {
              for(String conseiller : conseillers){
                if(!personne1.equals(conseiller)) continue;
              }
        //... if isEquals = true // do something
       
            }


    Mais je ne sais si c'est la bonne méthode car le résultat n'est pas celui attendu...

    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2018 à 11:15:48

      Salut,

      Donc en fait au début tu as 2 List de String, tu veux tout parcourir pour faire une manip dans le cas ou une String serait présente dans les 2 listes.

      Je ferais comme ça :

      for (String personne1 : personne) {
      	if (conseillers.contains(personne1)){
      		//Do something
      	}
      }

      Ce qui ne va pas dans ton code, c'est que ta 2ème boucle for ne sert à rien du tout.

      Dedans, tu fais une simple comparaison de String, et si ça colle pas, tu "continue" c'est à dire que tu passes à l'itération suivante de la même boucle. Et si la comparaison colle, et bien tu ne fais rien. En fait, que ton equals te retourne true/false, tu fais pareil : aller à l'itération d'après.

      Si encore tu changeais la valeur de ton isEquals, je dis pas. Voici une version fonctionnelle de ta façon de faire. ok ca fonctionne, mais c'est quand même un peu lourd pour ce que ca fait ^^

      boolean isEquals;
      for (String personne1 : personne) {
      	isEquals = false;
      	for(String conseiller : conseillers){
      		if(personne1.equals(conseiller)){
      			isEquals = true;
      			break;
      		}
      	}
      	if(isEquals){
      		//Do something
      	}
      }



      -
      Edité par Tiffado 2 août 2018 à 11:26:09

      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2018 à 11:19:29

        Bonjour MorganTartreau,

        Dans ta condition tu as mis l'inverse (présence du point d'exclamation) du boolean que retournait la comparaison.

        Imaginons que la comparaison est TRUE alors :

        Si

        if(personne1.equals(conseiller)) => TRUE


        Et comme tu as rajouté le "!" 

        if(!personne1.equals(conseiller)) => FALSE


        En me basant ce que tu as dit, si c'est FALSE tu voudrais que ça quitte si c'est TRUE ça le continue le traitement

        -
        Edité par Hiitch 2 août 2018 à 11:21:35

        • Partager sur Facebook
        • Partager sur Twitter
        Starcraft Broodwar is BACK !  MP pour jouer ensemble ! :D
          2 août 2018 à 14:32:57

          bonjour, j'ai trouvé la solution, elle se rapproche de la solution de Tiffado presque ligne pour ligne :)
          • Partager sur Facebook
          • Partager sur Twitter
            2 août 2018 à 16:51:53

            Tu peux nous la montrer stp ? ;)
            • Partager sur Facebook
            • Partager sur Twitter
              3 août 2018 à 11:24:38

                              for (String personne1 : personne) {
                                isEqual = true;
                                  if(!conseillers.contains(personne1)){
                                    isContained = false;
                                  }
                                    if(isContained){
              • Partager sur Facebook
              • Partager sur Twitter
                3 août 2018 à 14:08:36

                Ok, alors dans ce cas, une simple question : il te sert à quoi le "isContained" ?

                Qu'est-ce qu'il apporte ?

                Faire un if pour uniquement set un boolean dedans, puis ensuite tester ce boolean, c'est vraiment utile ? je vois pas pourquoi tu complexifies volontairement la proposition que j'avais faite en fait.

                • Partager sur Facebook
                • Partager sur Twitter
                  6 août 2018 à 14:14:55

                  Ah parce que isContained c'est isEquals, je me suis trompé !

                  Parce que mon code entier à la fin je vérifie mon boolean et je fais un else ;) (j'ai juste eu la flemme de tout réécrire)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 août 2018 à 15:06:04

                    j'ai quand meme l'impression que ca sert a rien de se balader avec un boolean comme ça, mais qu'importe.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    For dans for et comparaison

                    × 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