switch

images/whitebelt.png

Structure d’aiguillage multiple:

switch. 

   int mois ;
   // initialisation de mois : 1 pour janvier etc...
   // par contre les valeurs comme Calendar.JANUARY commencent à 0

   int nbJours = 0 ;
   switch(mois) { // reproduit le service getActualMaximum de GregorianCalendar
      // possible : case Calendar.JANUARY :
      case 1 : case 3 : case 5 : case 7: case 8 : case 10 : case 12 :
         nbJours = 31 ;
         break ;
      case 4 : case 6 : case 9 : case 11 :
         nbJours = 30 ;
         break ;
      case 2 :
         if(  java.time.Year.isLeap(annéeCourante)) {
            nbJours = 29 ;
         } else {
            nbJours = 28 ;
         }
         break ;
      default :    // ne devrait pas se produire
         curLogger.severe( "illegal month "+ mois) ;
         // voir notion de "assert"
   }

   switch(tableau.length) {
      // etc ....
      case 3: variableZ = tableau[2] ;
      case 2: variableY = tableau[1] ;
      case 1: variableX = tableau[0] ;
   }

switch avec un enum

   Urgence priorité ;
   // initialisation ...
   switch(priorité) {
      case BASSE : // doucement, doucement ....
         break ;
      case NORMALE : // "just do it"
         break ;
      case HAUTE : // à faire tout de suite!
         break :
   }

On peut utiliser une constante chaîne de caractère comme étiquette cible dans un switch :

String nomMois = ...... ;

switch(nomMois) {
    case "Janvier": case "Mars": // etc...
         // code
         break ;
    case "Février":
         //etc.
}
// comparaison précise tenant compte de la casse

--exercices--