Exercice Java : Comptage des voyelles d’un mot

Exercice java traite le  sujet suivant:

Comptage des voyelles d’un mot

Examinons ce petit Exercice java:



Écrire un programme qui lit un mot au claviera et qui indique combien de fois sont présentes chacune des voyelles a, e, i, o, u ou y, que celles-ci soient écrites en majuscules ou en minuscules, comme dans cet exemple :

donnez un mot : Anticonstitutionnellement
il comporte
1 fois la lettre a
3 fois la lettre e
3 fois la lettre i
2 fois la lettre o
1 fois la lettre u
0 fois la lettre y

a. On pourra utiliser la classe Clavier (voir note en début de chapitre).

On commence par convertir tous les caractères du mot en minuscules (par exemple). Puis on compare chaque caractère (obtenu par charAt) avec chacune des six voyelles que l’on a placées dans un tableau de caractères. Un tableau de six  entiers sert au comptage.

public class Voyelles
{ public static void main (String args[])
  { char voy[] = {'a', 'e', 'i', 'o', 'u', 'y'} ;
    int nVoy [] = new int [voy.length] ;
    for (int i=0 ; i<nVoy.length ; i++) nVoy[i] = 0 ;
    System.out.print ("donnez un mot : ") ;
    String mot = Clavier.lireString() ;
    mot = mot.toLowerCase() ;
    for (int i=0 ; i<mot.length() ; i++)
      for (int j=0 ; j<voy.length ; j++)
        if (mot.charAt(i) == voy[j]) nVoy[j]++ ;
    System.out.println ("il comporte : ") ;
    for (int i=0 ; i<voy.length ; i++)
    System.out.println(nVoy[i] + " fois la lettre " + voy[i]) ;
  }
}

L’instruction :

    mot = mot.toLowerCase() ;

crée une nouvelle chaîne obtenue par conversion en minuscules de la chaîne référencée par mot, puis place son adresse dans mot. Il n’y a pas modification de la chaîne initiale. Ici, toutefois, celle-ci devenant non référencée, deviendra candidate au ramasse-miettes…
Notez que lorsqu’une voyelle est détectée, le programme poursuit inutilement la comparaison du caractère concerné avec les éventuelles voyelles suivantes. On pourrait l’éviter en utilisant une instruction break dans la boucle la plus  interne.

Speak Your Mind

*


*