Vous êtes sur la page 1sur 16

Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)

http://www.pdfmail.com

Lecture de données
Classe fournissant des fonctions de
lecture au clavier
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Java est avant tout destiné à développer des applications ou des applet
utilisant des interfaces graphiques.

L’affichage dans la console ne présente pas de difficultés.


(System.out.println)

Malheureusement java ne prévoit rien de comparable pour la lecture au


clavier.

Il est toujours possible de développez une classe offrant les services de


base pour la lecture au clavier.

Il n’est pas nécessaire de comprendre le fonctionnement pour l’instant.


Il suffit de l’utiliser tel quel.
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

En interne Java utilise le format Unicode, comme ces caractères sont


représentés sur 16 bits on est obligé d’utiliser des flots spéciaux pour
manipuler: ce sont les Reader et les Writer.

Les classes InputStreamReader et OutputStreamWriter font le pont


avec les flots d’octets en assurant de manière implicite ou explicite les
conversions nécessaires.
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Le flux de données provenant du clavier est désigné par l'objet System


de type InputStream.

Ce type d'objets permet de lire des données caractère par caractère.


C'est au programmeur de retrouver ensuite dans ce flux de caractères
les informations qui l'intéressent.

Le type InputStream ne permet pas de lire d'un seul coup une ligne d
texte.

Le type BufferedReader le permet avec la méthode readLine.


Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Afin de pouvoir lire des lignes de texte tapées au clavier, on crée à


du flux d'entrée System.in de type InputStream, un autre flux
d'entrée de type BufferedReader cette fois :
BufferedReader IN=
new BufferedReader(new InputStreamReader(System.in));
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Les exceptions représentent le mécanisme de gestion des erreurs intégré


au langage java. Il se compose d'objets représentant les erreurs et d'un
ensemble de trois mots clés qui permettent de détecter et de traiter
ces erreurs ( try, catch et finally ) et de les lever ou
les propager (throw et throws).
try {
operation_risquée1;
opération_risquée2;
} catch (ExceptionInteressante e) {
traitements
} catch (ExceptionParticulière e) {
traitements
} catch (Exception e) {
traitements
}
finally {
traitement_pour_terminer_proprement;}
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

public class TestException {


public static void main(java.lang.String[] args) {
int i = 3;
int j = 0;
try {
System.out.println("résultat = " + (i / j));}
catch (Exception e) {
…..
}
catch (ArithmeticException e) {
…..
}}}
Résultat :
C:\tests>javac TestException.java
TestException.java:11: catch not reached.
catch (ArithmeticException e) {
^
1 error
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

import java.io.* ;
public class Clavier
{
public static String lireString () // lecture d'une chaine
{
String ligne_lue = null ;
try
{
InputStreamReader lecteur = new InputStreamReader (System.in) ;
BufferedReader entree = new BufferedReader (lecteur) ;
ligne_lue = entree.readLine() ;
}
catch (IOException err)
{ System.exit(0) ;
}
return ligne_lue ; }
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

public static float lireFloat () // lecture d'un float


{
float x=0 ; // valeur a lire
try
{ String ligne_lue = lireString() ;
x = Float.parseFloat(ligne_lue) ;
}
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ;
}
return x ;
}
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

public static double lireDouble () // lecture d'un double


{
double x=0 ; // valeur a lire
try
{
String ligne_lue = lireString() ;
x = Double.parseDouble(ligne_lue) ;
}
catch (NumberFormatException err)
{
System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ;
}
return x ;
}
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

public static int lireInt () // lecture d'un int


{ int n=0 ; // valeur a lire
try
{ String ligne_lue = lireString() ;
n = Integer.parseInt(ligne_lue) ;
}
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ;
}
return n ;
}
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

// programme de test de la classe Clavier


public static void main (String[] args)
{ System.out.println ("donnez un flottant") ;
float x ;
x = Clavier.lireFloat() ;
System.out.println ("merci pour " + x) ;
System.out.println ("donnez un entier") ;
int n ;
n = Clavier.lireInt() ;
System.out.println ("merci pour " + n) ;
}
}
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Pour pouvoir utiliser la classe clavier au sein d’un programme, vous


disposez de plusieurs solutions.
Recopier le fichier source Clavier.java dans le même répertoire que celui
où se trouve le programme l’utilisant.
Vous pouvez utiliser la classe Clavier en la collant à la suite de votre
fichier source.
Exemple
public class testLecture{
public static void main (String[] args)
{
int a,b,s;
System.out.println ("valeur 1=") ;
a = Clavier.lireInt() ;
System.out.println ("valeur 2=") ;
b = Clavier.lireInt() ;
s=a+b;
System.out.println ("le résultat est :"+s); }}
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Série N°3
Exercice 1
Ecrire un programme java qui demande un nombre à l’utilisateur,
et l’informe ensuite si ce nombre est positif ou négatif
(on laisse de côté le cas où le nombre vaut zéro).

Exercice 2
Ecrire un programme java qui demande deux nombres à l’utilisateur
et l’informe ensuite si leur produit est négatif ou positif
(on laisse de côté le cas où le produit est nul).
Attention toutefois : on ne doit pas calculer le produit des deux
nombres.
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Exercice 3
Ecrivez un programme java permettant à l’utilisateur de saisir
un nombre quelconque de valeurs, qui devront être stockées dans
un tableau. L’utilisateur doit donc commencer par entrer le nombre
de valeurs qu’il compte saisir. Il effectuera ensuite cette saisie.
Enfin, une fois la saisie terminée, le programme affichera le nombre
de valeurs négatives et le nombre de valeurs positives.
Exercice 4
Un magasin de reprographie facture 0,30 dh les dix premières
photocopies, 0,25 dh les vingt suivantes et 0,20 dh au-delà.
Ecrivez programme java qui demande à l’utilisateur le nombre de
photocopies effectuées et qui affiche la facture correspondante.
Exercice 5
Ecrivez un programme java qui après avoir demandé un numéro
de jour, de mois et d'année à l'utilisateur, renvoie s'il s'agit ou non
d'une date valide.
Ce document a été fabriqué par PDFmail (Copyright RTE Multimedia)
http://www.pdfmail.com

Exercice 6
Ecrire un programme java constituant un tableau, à partir de
deux tableaux de même longueur préalablement saisis.
Le nouveau tableau sera la somme des éléments des deux tableaux
de départ.

Exercice 7
Ecrire un programme java qui demande un nombre de départ, et
qui ensuite écrit la table de multiplication de ce nombre.

Exercice 8
Ecrivez un programme java calculant la somme , max, min,
et moyenne des valeurs d’un tableau