Chaines de caractères en java

inpgrenoble38 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

Je suis débutant en java et j'ai une petite question à vous poser.
Je dois récupérer le nombre de caractères 'a' saisis au clavier. et en convertissant les char en int j'ai pu faire
la première question.

char tmpchar = Character.toChars(carcour)[0];
System.out.println(tmpchar + " <-> " + achar);
    if(carcour == achar){
 	nba ++;
}


la 2e question:
En fait je souhaite maintenant récupérer le nombre de fois de 'le' saisis au clavier.
exemple: si je saisis "le nul en java", il doit m'afficher -->> 1.

comment puis-je faire?parce que en utilisant la même chose qu'à la première question je n'y arrive pas.
Merci à vous de m'éclairer.

Bonne journée.
A voir également:

4 réponses

Pacorbanix
 
une manière de faire : à chaque fois que tu trouves "l" (le premier caractère de "le"), tu fais une boucle qui va tester si les caractères qui suivent sont bien ceux de la chaîne que tu cherches.

Dasn ton exemple : il trouve le premier l, et vérifie qu'après c'est bien un "e", et c'est le cas -> on ajoute 1 au nombre de "le" trouvés. Ensuite il trouve un autre "l" (celui de nul), il vérifie le caractère après, mais ce n'est pas "e", donc il ne fait rien. Et ensuite il n'y a plus de "l" et la boucle principale s'arrete. -> le résultat final est 1.
0
inpgrenoble38 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour ta réponse.

Oui c'est bien ça l'idée. Je fais ça mais il y a un souci quelques part. Je vais y arriver.
0
Pacorbanix
 
une bonne manière est de poser l'algorithme en "mots" sur papier, ça peut aider.
0
Utilisateur anonyme
 
Salut,

L'utilisation de regex (import java.util.regex.*;) répond au 2 questions

Exemple:


   import java.util.regex.*;
   
    public class LaClasse
   {
      private static Pattern pattern;
      private static Matcher matcher;
      private static int nbreDeFois;
      private static String info = "";


La méthode:
  
       public static void regEx(String chaine, String motif) // trouver motif dans chaine
      {
         nbreDeFois = 0;
      
         info = "\nRECHERCHE DU MOTIF \""  + motif + "\""  + " dans la cha\u00eene:\n"
            + "\"" + chaine + "\"\n";
         pattern = Pattern.compile(motif);
         matcher = pattern.matcher(chaine);

         while(matcher.find())
         {
            nbreDeFois++;
            //System.out.println("nbreDeFois: " + nbreDeFois);
         }
         info+= "\n\"" + motif + "\"" + " existe " + nbreDeFois + " fois dans \"" + chaine + "\"\n";
      	
         javax.swing.JOptionPane.showMessageDialog(null,info);
         
      }


La méthode main(...)
       public static void main(String args[])
      {
       
         String chaine = "le nul en Java";
         String motif = "le"; // ce motif est le plus simple d'utilisation
                                // puisqu'il s'agit d'une chaîne littérale
 // appel de la méthode:
         regEx(chaine, motif); //résultat 1

 chaine = "le nul en Java et les nuls";
         motif = "le";
         regEx(chaine, motif); // résultat 2
         
      	// si on ne veut pas le de les nuls:
         chaine = "le nul en Java et les nuls";
         motif = "le ";
         regEx(chaine, motif); //résultat 1
         
         chaine = "Le nul en Java et les nuls";
         motif = "le";
         regEx(chaine, motif); //résultat 1
         
         chaine = "le nul en Java et les nuls";
         motif = ".e"; // ici, le point est un caractère spécial (Méta caractère)
                            // qui signifie que l'on veut recercher "e" précédé
                            // d'UN caractère quelconque (UN puisqu'il n'y a qu'UN point
         regEx(chaine, motif);
         // dans ce cas on trouvera 4 .e
      	// .e de le
      	// .e de en précédé d'un espace
      	// .e de et précédé d'un espace
      	// .e de les précédé d'un espace

//concernant la 1ère question

         chaine = "le nul en Java";
         motif = "a"; 
         regEx(chaine, motif);  Résultat 2
      	.........
      	..........
      	}


Utilisation depuis une classe externe:

String chaine "le nul en java";
String motif = "a";
LaClasse.regEx(chaine, motif);


Pour en savoir plus, beaucoup plus:

ftp://ftp-developpez.com/cyberzoide/java/regex.pdf

Cordialement,

Dan
0