public class f_textio { // Cette fonction affiche a l'ecran le MeSsaGe de l'utilisateur, // puis lit au clavier un nombre entier >= 0. // Le nombre lu est le cas echeant confronte a l'intervalle // [LUMIN, LUMAX], et la lecture iteree en cas d'erreur de saisie. // LUMIN >=0 ==> le nombre lu doit etre >= LUMIN. // LUMAX >=0 ==> le nombre lu doit etre <= LUMAX. // Les 2 parametres < 0 ==> aucune autre contrainte que: nb. >= 0. // Si les 2 param. sont >=0 mais LUMIN > LUMAX, ils sont IGNORES. public static int READ_INT (String MSG) { return READ_INT (MSG, -1, -1); } public static int READ_INT (String MSG, int LUMIN) { return READ_INT (MSG, LUMIN, -1); } public static int READ_INT (String MSG, int LUMIN, int LUMAX) { int Resultat, LUMINAT; boolean PMIN, PMAX, OK; // corps de la fonction: PMIN= LUMIN >= 0; PMAX= LUMAX >= 0; if (PMIN && PMAX) { PMIN = LUMIN <= LUMAX; PMAX = PMIN; } if (PMIN) // LUMINAT = valeur minimale du nombre lu. LUMINAT= LUMIN; else LUMINAT= 0; System.out.print ("*** L'entier demande doit etre >= " + LUMINAT); if (PMAX) System.out.print (" et <= " + LUMAX); System.out.println(); System.out.print (MSG + " ? "); for (;;) { Resultat = Clavier.lireInt(); OK = Resultat >= LUMINAT; if (PMAX) OK = OK && Resultat <= LUMAX; if (OK) break; System.out.print ("Contrainte(s) non satisfaite(s): recommencez. ? "); } return Resultat; } }