Exercice Java : Lecture de valeurs d’un type énuméré

Exercice java traite le  sujet suivant:

Lecture de valeurs d’un type énuméré

A priori, vous ne pouvez pas lire au clavier une valeur d’un type énuméré, pas plus d’ailleurs que vous ne pouviez en  afficher la valeur par exemple par println. Mais il vous est toujours possible de lire une valeur de type String et de lui associer la valeur corrrespondante du type énuméré, si elle existe.

Examinons ce petit Exercice java:


On suppose qu’on dispose d’un type énuméré nommé Suite. Écrire un programme qui lit une chaîne au clavier et qui  indique si cette chaîne correspond ou non à un libellé du type et qui, le cas échéant, en affiche le rang dans les valeurs du type.

Toute classe d’énumération dispose d’une méthode valueOf qui effectue la conversion inverse de toString, à savoir : convertir une chaîne en une valeur du type énuméré correspondant.
Cependant, si la chaîne en question ne correspond à aucune valeur du type, on aboutit à une exception qui doit alors  être interceptée, sous peine de voir le programme s’interrompre.
Ici, nous vous proposons une démarche, moins directe, mais ne comportant plus de risque d’exception, à savoir : parcourir chacune des valeurs du type énuméré (à l’aide du tableau fourni par la méthode values) en comparant sa  conversion en chaîne (toString) avec la chaîne fournie au clavier.

public class LectureEnum
{ public static void main (String args[])
  { String chSuite ;
    System.out.print("Donnez un libelle de l'enumeration Suite : ");
    chSuite = Clavier.lireString () ;
    boolean trouve = false ;
    for (Suite j : Suite.values())
      { if (chSuite.equals(j.toString() ) )
        { trouve = true ;
          int numSuite = j.ordinal() ;
          System.out.println(chSuite + " correspond a la valeur de rang "
                               + (numSuite+1) + " du type Suite" );
        }
      }
    if (!trouve) System.out.println (chSuite
                         + " n'appartient pas au type Suite") ;  
  }
}
enum Suite {ut, re, mi, fa, sol, la, si }

Donnez un libelle de l'enumeration Suite : Re
Re n'appartient pas au type Suite

Donnez un libelle de l'enumeration Suite : mi
mi correspond a la valeur de rang  3 du type Suite

Leave a Reply

Your email address will not be published. Required fields are marked *


*