IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Compter des caractères dans une chaîne de caracteres


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    OPERATEUR
    Inscrit en
    Décembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : OPERATEUR
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 14
    Points : 18
    Points
    18
    Par défaut Compter des caractères dans une chaîne de caracteres
    Bonjuour,

    Je voudrais compter le nombre de A dans une chaîne de caractère mais je ne sais pas comment faire. Merci.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     //Ceci importe la classe Scanner du package java.util
    	import java.util.Scanner; 
      //Ceci importe toutes les classes du package java.util
    	import java.util.*;
     
        public class transformcaractere {
    	/*ecrivez un programme qui réalise les opérations suivantes : 
    	a. Demander la saisie d'une phrase.
    	b. Afficher la phrase en majuscules.
    	c. Compter le nombre de a dans la phrase puis, s'il y en a, transformer tous les a en *.
     
    	*/
     
    	 public static void main(String args[]) {
     
       String saisi ;
       char rep ;
     
    		do {
     
    		 Scanner clavier = new Scanner(System.in);  
    		 System.out.println("saisi phrase");
    		         saisi = clavier.next ();
             System.out.println(saisi.toUpperCase() );
     
       char replacement='*';
       char regex='a';
       saisi.replace(regex, replacement); 
     		System.out.println(saisi.replace (regex, replacement)  );
     
       char indexof = 'a' ;
     
            System.out.println( indexof = 'a'   )
            ;
            do  {
            System.out.println("super encore o/n ");
        	 rep =   clavier.next().charAt(0);
       	}  while ( rep!='o' && rep!='n'/* Condition */) ;
     
        }  while ( rep=='o' /* Condition */) ; 
     
        	 System.out.println("au revoir");
     
     
     
    	} 
    }

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Pour compter les occurrences d'une lettre tu peux utiliser la méthode indexOf() de la classe String par exemple.

    Cdt.

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String chaine = "Nombre de A dans cette chaine est : ";
    System.out.println(chaine + (chaine.split("a|A",-1).length - 1));
    A+.

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Le code donné par andry est très probablement obscure pour un débutant comme toi. (Dans ce cas, on divise à chaine à chaque fois qu'on a un 'a', puis on compte le nombre de morceau)

    Du coup, je vais te proposer une version un peu plus basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package org.developpez.k;
     
    public class Compteur {
     
    	public static void main(String[] args) {
    		String chaine = "Nombre de A dans cette chaine est : ";
    		int compte = 0;
    		// On parcours chaque lettre de la chaine une par une.
    		// Pour faire cela de manière simple, on transforme la chaine en tableau de lettre (ie char[])
    		// Et on profite de la structure for pour parcourir cela proprement.
    		for (char lettre : chaine.toCharArray()) {
    			// On réalise la comparaison avec les caractères voulus ici.
    			// Note : On peut utiliser l'opérateur == sur le type char, à la différence des String.
    			if(lettre == 'a' || lettre == 'A'){
    				compte++;
    			}
    		}
    		System.out.println(chaine +compte);
    	}
    }
    Note :
    Pense à bien indenté ton code correctement. Cela facilite la lecture de celui-ci.

    Lorsque tu as un commentaire qui explique ce que fait/doit faire le programme. N'hésite pas découpé celui-ci pour avoir en dessous de celui-+ci le code correspondant.

    Cordialement,
    Patrick Kolodziejczyk
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    A mon avis, s'agissant d'un exercice, il n'est pas question d'utiliser des expressions régulières ou autres moyens indirects, mais d'utiliser les moyens de base, donc +1 pour la solution de @Kolotz

    1. parcourir les caractères de la chaîne (for(int i=0; i<chaine.length(); i++)) ou un forEach comme indiqué par @Kolotz
    2. tester chaque caractère (chaine.charAt(i)) en le comparant à 'a' ou 'A', et incrémenter un compteur le cas échéant.


    Eventuellement, utiliser indexOf() comme le suggère @Nico02, mais c'est un peu plus compliqué (surtout s'il faut compter les 'a' et les 'A') :
    1. Chercher le premier 'a' (position = chaine.indexOf('a') : position vaut -1 si le caractère n'est pas trouvé, sinon sa position
    2. Tant qu'on en trouve, chercher le suivant while(position!=-1) et position=chaine.indexOf('a', position+1)
    3. incrémenter le compteur chaque fois qu'on en trouve


    Par ailleurs, attention, ton code qui remplace le 'a' par '*', à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char replacement='*';
       char regex='a';
       saisi.replace(regex, replacement); 
     		System.out.println(saisi.replace (regex, replacement)  );
    Il faut le faire après avoir compter les 'a' (comme le suggère d'ailleurs le sujet, puisqu'on te dit "Compter le nombre de a dans la phrase puis, s'il y en a, transformer tous les a en *").
    Forcément si tu remplaces les 'a' par '*' avant de compter les 'a', tu auras toujours zéro 'a' !
    Accessoirement, tu fais 2 fois le remplacement (une fois de trop dans le System.out.println()), ce qui ne sert à rien...
    A noter aussi, que le nom de la variable "regex" est fallacieux... la méthode replace() prend 2 chars en paramètres, et on remplace toutes les occurences du premier par le second. Il n'y a aucune expressions régulières dans cette affaire.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre à l'essai
    Homme Profil pro
    OPERATEUR
    Inscrit en
    Décembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : OPERATEUR
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    Salut,

    Pour compter les occurrences d'une lettre tu peux utiliser la méthode indexOf() de la classe String par exemple.

    Cdt.
    slt je connais mais ne sais pas comment l'appliquer .

  7. #7
    Membre à l'essai
    Homme Profil pro
    OPERATEUR
    Inscrit en
    Décembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : OPERATEUR
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Bonjour,

    Le code donné par andry est très probablement obscure pour un débutant comme toi. (Dans ce cas, on divise à chaine à chaque fois qu'on a un 'a', puis on compte le nombre de morceau)

    Du coup, je vais te proposer une version un peu plus basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package org.developpez.k;
     
    public class Compteur {
     
    	public static void main(String[] args) {
    		String chaine = "Nombre de A dans cette chaine est : ";
    		int compte = 0;
    		// On parcours chaque lettre de la chaine une par une.
    		// Pour faire cela de manière simple, on transforme la chaine en tableau de lettre (ie char[])
    		// Et on profite de la structure for pour parcourir cela proprement.
    		for (char lettre : chaine.toCharArray()) {
    			// On réalise la comparaison avec les caractères voulus ici.
    			// Note : On peut utiliser l'opérateur == sur le type char, à la différence des String.
    			if(lettre == 'a' || lettre == 'A'){
    				compte++;
    			}
    		}
    		System.out.println(chaine +compte);
    	}
    }
    Note :
    Pense à bien indenté ton code correctement. Cela facilite la lecture de celui-ci.

    Lorsque tu as un commentaire qui explique ce que fait/doit faire le programme. N'hésite pas découpé celui-ci pour avoir en dessous de celui-+ci le code correspondant.

    Cordialement,
    Patrick Kolodziejczyk
    bonjour tout d'abord merci de prendre le temps de m’éclairer lorsque je met ce code sa me met toujours 3 et ceux meme si je mzt un mot sans a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    //Ceci importe la classe Scanner du package java.util
    	import java.util.Scanner; 
      //Ceci importe toutes les classes du package java.util
    	import java.util.*;
     
        public class transformcaractere {
    	/*ecrivez un programme qui réalise les opérations suivantes : 
    	a. Demander la saisie d'une phrase.
    	b. Afficher la phrase en majuscules.
    	c. Compter le nombre de a dans la phrase puis, s'il y en a, transformer tous les a en *.
     
    	*/
     
    	 public static void main(String args[]) {
     
       String saisi ;
       char rep ;
     
    		do {
     
    		 Scanner clavier = new Scanner(System.in);  
    		 System.out.println("saisi phrase");
    		         saisi = clavier.next ();
     
     
            String chaine = "Nombre de A dans cette chaine est : ";
    	 	int compte = 0;
    		 		// On parcours chaque lettre de la chaine une par une.
    		 		// Pour faire cela de manière simple, on transforme la chaine en tableau de lettre (ie char[])
    		 		// Et on profite de la structure for pour parcourir cela proprement.
         	for (char lettre : chaine.toCharArray()) {
    		 			// On réalise la comparaison avec les caractères voulus ici.
    		 			// Note : On peut utiliser l'opérateur == sur le type char, à la différence des String.
    	    if(lettre == 'a' || lettre == 'A'){
    		 	 	compte++;
    		 			}
    		 		}
    	    System.out.println(chaine +compte);
     
     
     
     
             System.out.println(saisi.toUpperCase() );
     
       char replacement='*';
       char regex='a';
         	System.out.println(saisi.replace (regex, replacement)  );
     
     
     
     
            do  {
            System.out.println("super encore o/n ");
        	 rep =   clavier.next().charAt(0);
       	}  while ( rep!='o' && rep!='n'/* Condition */) ;
     
        }  while ( rep=='o' /* Condition */) ; 
     
        	 System.out.println("au revoir");
     
     
     
    	} 
    }

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par sg025 Voir le message
    bonjour tout d'abord merci de prendre le temps de m’éclairer lorsque je met ce code sa me met toujours 3 et ceux meme si je mzt un mot sans a
    Bah, oui, ce que tu as fait c'est compter le nombre de 'a' et 'A' dans "Nombre de A dans cette chaine est : " ! Et, donc, c'est bien 3. Toi, il te faut compter les caractères dans la variable "saisi", qui correspond à ce qui a été entré par l'utilisateur au clavier.
    Il ne suffit pas de faire un copier/coller sans réfléchir : il faut lire le code, comprendre comment il fonctionne, et l'adapter, ou alors l'écrire toi-même, en suivant les conseils que je t'ai donnés, par exemple.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/07/2015, 14h09
  2. Recherche une chaîne de caracteres par textbox sur BD
    Par BERRACHED SAID dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/05/2013, 22h03
  3. Comment faire pour supprimer dans une chaîne de caractere
    Par Thierry69CH dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/07/2010, 20h23
  4. Réponses: 4
    Dernier message: 14/01/2008, 14h09
  5. Permuter les bits d'une chaîne de caractere
    Par Menontona dans le forum C
    Réponses: 14
    Dernier message: 13/09/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo