Compter le nombre de répétition d'un caractère dans une chaine

Résolu
thakiller77 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
thakiller77 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travail sur cette fonction depuis un moment et je n'arrive pas à obtenir de résultat. Mon but est de compter le nombre de points dans une chaine de ce type : 75.062.075.058.064.0

A chaque fois que j'éxéute le programme, l'ordinateur m'affiche : "Il y a 1 point". Si je change la valeur dans la variable : "int nbpoint = 16" (16 étant un nombre aléatoire), l'ordinateur m'affichera "Il y a 16 point"

Voici la fonction :

int compterpoint (String texte,int nblettre)
{ String point = ".";
int premierpoint = texte.indexOf(point);
int nbpoint = 1;
for (int j= premierpoint ; j >= nblettre-2; nbpoint ++ )
{String extraittext = texte.substring (j+1);
j = extraittext.indexOf(point,j+1);
}
return nbpoint;}

// indexOf permet de déterminer la position de "point" dans "extraittext" à partir de la position "j+1" (ici)

// substring permet d'extraire une chaine de "texte" à partir de la position "j+1" (ici) jusq'à la fin
A voir également:

4 réponses

jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour,

...
for (int j= premierpoint ; j <= nblettre-2; nbpoint ++ )
...

Peut être...
0
thakiller77 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai essayé et in ne se passe rien, c'est à dire que le programme tourne sans afficher de résultat. J'ai l'impression qu'il tourne en boucle et qu'il ne se passe rien. J'ai même réduit la chaîne pour voir si ce n'était pas juste un problème de performance de l'ordi mais toujours la même chose....

Est-ce que vous aurez une autre idée...? :)
0
jeremux Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   4
 
Comme ça vite fait, peut être:

public static int compterpoint (String texte,int nblettre)
{
String point = ".";
int premierpoint = texte.indexOf(point);
int nbpoint = 0;

for (int i= 0 ; i < nblettre ; i++)
{
if (texte.charAt(i)=='.')
{
nbpoint++;
}
}

return nbpoint;
}

0
thakiller77 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Génial !! il suffit de mettre i < nblettre-2 et ça marche parfaitement ! Etant débutant dans java merci beaucoup de m'avoir aidé !!!

Bonne journée :)
0