Utiliser un switch pour des cotes de test

Un étudiant a demandé s’il était possible d’utiliser un switch pour afficher une cote ou un message d’appréciation. A priori, le switch se limite à évaluer des valeurs seules et non des intervals. Mais c’est chose possible avec l’approche suivante.

L’astuce consiste à diviser le nombre de points par un diviseur, ici 10, pour déterminer dans quelle tranche ou interval se situe les points. Le fait d’utiliser un int permet d’arrondir le résultat et d’obtenir un facteur.

// Must be higher than 0 or you will get an error below !
int studentMarks = 75;

int divider = 10;

int gradeInterval = studentMarks/divider; // Rounds off to whole number

En paramètre du switch on utilise le résultat obtenu. Il est ensuite comparé avec les nombres de 0 à 10 (0 à 100%). Une égalité signifie que les points sont égaux ou supérieurs à la limite inférieure d’un interval à l’exception du 0 qui indique que les points sont inférieurs à 10%.

Il suffit ensuite d’ajouter une sortie pour afficher un message.

switch (gradeInterval) {
case 0:
System.out.println("Grade F - Lower than 10%");
break;
case 1:
System.out.println("Grade E - Higher or equal to 10%");
break;
case 2:
System.out.println("Grade E - Higher or equal to 20%");
break;
case 3:
System.out.println("Grade D - Higher or equal to 30%");
break;
case 4:
System.out.println("Grade D - Higher or equal to 40%");
break;
case 5:
System.out.println("Grade C - Higher or equal to 50%");
break;
case 6:
System.out.println("Grade C - Higher or equal to 60%");
break;
case 7:
System.out.println("Grade B - Higher or equal to 70%");
break;
case 8:
System.out.println("Grade B - Higher or equal to 80%");
break;
case 9:
System.out.println("Grade A - Higher or equal to 90%");
break;
case 10:
System.out.println("Grade A - 100%");
break;
default:
System.out.println("Unexpected result !");
}

– James Poulson.

Une réflexion au sujet de « Utiliser un switch pour des cotes de test »

  1. Ping : Recap java, semaine 5, année 2013 | Blog de la rubrique java

Les commentaires sont fermés.