import java.io.*;
/**
*
* Cette classe a pour rôle de faciliter la lecture de données
* à partir du clavier.
* Elle definit une méthode de lecture pour les types de base
* les plus courramment utilisés (int, float, double, boolean, String).
*
* La lecture d'une valeur au clavier se fait en tapant celle-ci suivie
* d'un retour chariot.
*
* En cas d'erreur de lecture (par exemple un caractère a été tapé
* lors de la lecture d'un entier) un message d'erreur est affiché
* sur la console et l'exécution du programme est interrompue.
*
* exemples d'utilisation de cette classe
*
* System.out.print("entrez un entier : ");
* System.out.flush();
* int i = LectureClavier.lireEntier();
* System.out.println("entier lu : " + i);
*
* System.out.print("entrez une chaine :");
* System.out.flush();
* String s = LectureClavier.lireChaine();
* System.out.println("chaine lue : " + s);
*
* System.out.print("entrez une réel (float) : ");
* System.out.flush();
* float f = LectureClavier.lireFloat();
* System.out.println("réel (float) lu : " + f);
*
* System.out.print("entrez une réel (double) : ");
* System.out.flush();
* double d = LectureClavier.lireDouble();
* System.out.println("réel (double) lu : " + d);
*
* System.out.print("entrez une réposne O/N : ");
* System.out.flush();
* boolean b = LectureClavier.lireOuiNon();
* System.out.println("booleen lu : " + b);
*
*
* @author Philippe Genoud
* @version 13/10/98
*/
public class LectureClavier {
private static BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
/**
* lecture au clavier d'un entier simple precision (int)
* @return l'entier lu
*/
public static int lireEntier() {
try {
return(Integer.parseInt(stdin.readLine()));
}
catch (Exception e)
{
erreurEntree(e,"entier");
return 0; // même si on passe jamais ici il faut un return !!
}
}
/**
* lecture au clavier d'une chaine de caractêres
* @return la chaine lue
*/
public static String lireChaine() {
try {
return(stdin.readLine());
}
catch (Exception e) {
erreurEntree(e,"chaine de caractères");
return null;
}
}
/**
* lecture au clavier d'un réel simple précision (float)
* @return le float lu
*/
public static float lireFloat() {
try {
return(Float.valueOf(stdin.readLine()).floatValue());
}
catch (Exception e) {
erreurEntree(e,"r‰el (float)");
return (float) 0.0;
}
}
/**
* lecture au clavier d'un reél double précision (double)
* le double lu
*/
public static double lireDouble() {
try {
return(Double.valueOf(stdin.readLine()).doubleValue());
}
catch (Exception e) {
erreurEntree(e,"réel (double)");
return 0.0;
}
}
/**
* lecture au clavier d'une réponse de type oui/non. Si la valeur tapée est
* "o" ou "O" cette méthode renvoie true, sinon elle renvoie
* false.
* @return true si la chaine lue est "o" ou "O",
* false sinon
*/
public static boolean lireOuiNon() {
String ch;
ch = lireChaine();
return (ch.equals("o") || ch.equals("O"));
}
/**
* en cas d'erreur lors d'une lecture, affiche sur la sortie standard
* (System.out) un message indiquant le type de l'erreur ainsi que
* la la pile des appels de méthodes ayant conduit à cette erreur.
* @param e l'exception décrivant l'erreur.
* @param message le message d'erreur à afficher.
*/
private static void erreurEntree(Exception e, String message)
{
System.out.println("Erreur lecture " + message);
System.out.println(e);
e.printStackTrace();
System.exit(1);
}
} // LectureClavier