Partage
  • Partager sur Facebook
  • Partager sur Twitter

{JAVA}je cherche une chaine de caractère dans une chaine de caractère

tester si la chaine

Sujet résolu
    19 mars 2007 à 10:45:33

    salut mes amis
    j'ai un problème , je voulais realiser un code qui me permet de tester si une valeur appartient a une valeur si oui ou nom



    int index=0;
      String Q="ABC";
      String f="BC";
      index = Q.lastIndexOf(f.toString());
                       if (index != -1) {
                         System.out.print("vrai");
                       }
    else {
    System.out.Println ("faux ");}
     


    mais ça ne marche pas car si j'ai f="AC" il m'affiche faut
    mais je voulais que cette valeur appartient

    un autre exemple si j'ai Q ="ABCD" et f="AD" normalement m'affiche vrai au leiu de faux

    • Partager sur Facebook
    • Partager sur Twitter
      19 mars 2007 à 12:29:47

      en fait, c'est assez simple :

      tu prend chaque caractère de ta variable Q, et chaque caractère de f, et tu les compare...

      tiens, je t'ai fait une méthode, qui, en théorie, devrait marcher ;)

      public boolean nomDeLaMethode(String Q,String f) {
                      int ok = 0;
                      for (int j = 0; j < Q.length(); j++)
                              for (int i = 0; i < f.length(); i++)
                                      if (Q.charAt(j) == f.charAt(i)) {
                                              ok++;
                                              i = f.length();
                                      }
                      if (ok >= f.length())
                              return true;
                      return false;
              }
      • Partager sur Facebook
      • Partager sur Twitter
      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        19 mars 2007 à 17:00:44

        Si Q="AABCD" et f="AD3, faut-il que la réponse soit vrai ou faux. Dans le premier cas, le code de shadosan est bon, dans le second, il faut enlever les caractères des chaines en cas d'égalité. ;)
        • Partager sur Facebook
        • Partager sur Twitter
          19 mars 2007 à 19:20:17

          merci mes amis
          mais je voulais bien développer cette idée car chez moi ne marche pas il y a quelque chose qui ne va pas dans le code



          public  static boolean nomDeLaMethode(String chaine2, ArrayList B) {
                            int ok = 0;
                            int index = 0;
           
                   
                       for (int j = B.size() - 1; j >= 0; --j) {
                 
                         index = chaine2.lastIndexOf(B.get(j).toString());
                         if (index != -1) {
                           ok++;
                 
                           chaine2 = chaine2.subSequence(0, index).toString();
                         }
                 
                       }





          public static void main(String[] args)
           
              {
                ArrayList BB = new ArrayList();
                BB.add("12");
                BB.add("145");
                BB.add("13");
           
          String valeurs = "1213";
           
                 
          boolean d=alpha.nomDeLaMethode(valeurs,BB);
                  System.out.print(d);
          }





          normalement j'airais true mais si j'ai valeurs ="12148" j'aurais false
          j'ai remarqué que la méthode n'est pas juste il manque quelque chose quelque part
          • Partager sur Facebook
          • Partager sur Twitter
            21 mars 2007 à 13:11:49

            je m'avance et j'ai trouvé comment compter le nombre ok d'une chaine dans une lsite
            voila le code

            s.add("B");
            s.add("C");
            s.add("D");
            s.add("A");

                 int index = 0;
                 int ok = 0;
                 String chaine2 = "CDBCfgDZA";
                 boolean continu = true;
               
                while (chaine2!=null){
              for (int j = s.size() - 1; j >= 0 && continu; --j) {
                   

                     index = chaine2.lastIndexOf(s.get(j).toString());
                     if (index != -1) {
                       ok++;
                       chaine2 = chaine2.subSequence(0, index).toString();
                     }
                     else {
                       chaine2 = chaine2.subSequence(0, chaine2.length()).toString();
                     }

                   }
                   System.out.println("est " + chaine2);
                   System.out.println(ok);
               
                }





            mais le problème que le programme ne s'arrette pas boucle toujours while (chaine2!=null)malgré la chaine est vide

            j'ai un affichage

            est
            6
            est
            6
            est
            6


            l'execution ne s'arrete pas comment je dois arreter mon pogremme
            • Partager sur Facebook
            • Partager sur Twitter
              21 mars 2007 à 21:54:05

              je ne vois pas où chaine2 deviendrais null...

              et hum, au lieu d'utiliser subSequence, essais substring ... (pas de majuscule dans substring, hein) à priori, cela ne devrais pas changer grand-chose, par contre.
              • Partager sur Facebook
              • Partager sur Twitter
              Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                21 mars 2007 à 22:04:04

                ta variable Q respecte pas les conventions de nommage ,c'est mal :p
                utilise q plutot
                • Partager sur Facebook
                • Partager sur Twitter
                  21 mars 2007 à 22:41:22

                  Ah oui, tant qu'à y être :

                  La convention de nommage de variables :
                  1 - Le nom doit commencer par une lettre;
                  2 - La première lettre doit être minuscule;
                  3 - Le nom ne doit pas contenir de caractère(s) spécial(ux) tel que 'é', 'à', etc, sauf '_', mais qui est à éviter, si possible;
                  4 - Si (et SEULEMENT si) il y a plus qu'un mot dans une variable, mettre la première lettre de chaque mot en majuscule (tout en respectant la consigne #2);
                  5 - ... et les constantes toutes en majuscule. ( ^^ )

                  Cela s'applique aussi sur les nom des fonctions/méthodes, sauf pour les classe, qui eux devrais avoir une lettre majuscule en premier. J'espère ne pas t'avoir mélangé dans tout ce charabia ^^
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                    22 mars 2007 à 0:22:47

                    et les constante tout en majuscule :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 mars 2007 à 16:13:25

                      j'ai modifié la lignewhile (chaine2!=null){ par while(!"".equals(chaine2))

                      je voulais bien utiliser des chiffre au lieu des lettres mais j'ai un pb voila le code


                      String chaine2 ="12131415";
                      ArrayList s = new ArrayList();
                           s.add("12");
                           s.add("13");
                           s.add("14");
                           s.add("15");

                          int index = 0;
                          int ok=0;
                         
                       

                      while (!"".equals(chaine2)){
                                  for (int j = s.size() - 1; j >= 0 ; --j) {
                       
                       
                                         index = chaine2.lastIndexOf(s.get(j).toString());
                                         if (index != -1) {
                                           ok++;
                                           chaine2 = chaine2.subSequence(0, index).toString();
                                         }
                                         
                                         
                                         
                       
                                       }
                                       
                                        chaine2 = chaine2.subSequence(0, chaine2.length()).toString();
                       
                                    }
                                    System.out.println(ok);


                      affchage oki =4


                      si j'ai String chaine2 = "12135715"; oki =3


                      le problème si j'ai String chaine2 = "1213141215"; oki =4 c'est faux au lieu de m'afficer 5 il m'affiche 4
                      meme pour ça String chaine2 = "1213141215151313"; au lieu de m'affiche oki = 8 il m'affiche 4


                      String chaine2 = "1233151420141214";au lieu de m'afficher 5 il m'affiche 2









                      • Partager sur Facebook
                      • Partager sur Twitter

                      {JAVA}je cherche une chaine de caractère dans une chaine de caractère

                      × 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