suivant: À propos de ce
TP de Java 22e Année Informatique 2003-2004
Exercice 1 label=MaConsole.java,frame=single
Question 1.1 label=MauvaiseEntreeException.java,frame=single
Consulter la documentation de la méthode parseInt
de la classe Integer. Quelle exception peut-elle renvoyer ?
Question 1.2
écrire un petit programme java qui prendra comme
arguments (c'est à dire dans l'argument args de
main) une série d'entiers, et affichera leur somme. On
considère que si l'utilisateur entre un argument qui n'est pas un
entier, le programme s'arrête sur l'exception :
$ java MonProg 15 7 a 3
Exception in thread "main" java.lang.NumberFormatException: a
at java.lang.Integer.parseInt(Integer.java, Compiled Code)
at java.lang.Integer.parseInt(Integer.java, Compiled Code)
at MonProg.main(MonProg.java:7)
Question 1.3
même chose, mais on veut un message d'erreur :
$ java MonProg 15 7 a 3
erreur : entrez uniquement des entiers
Question 1.4
même chose, mais cette fois-ci, en cas d'erreur, on veut
afficher la somme partielle jusqu'à l'erreur :
$ java MonProg 15 7 a 3
22
Question 1.5
même chose, mais on ignore les arguments erronés :
$ java MonProg 15 7 a 3
25
Exercice 2
Pour lire une ligne de texte sur l'entrée standard, il faut :
On désire écrire une classe nommée MaConsole, pour disposer
d'entrées/sorties simples.
Question 2.6 écriture (pas d'exception ici)
écrire une méthode :
- void ecrire (String s)
-
écrit s sur la console
et une méthode
- void ecrire (int i)
-
écrit i sur la console
Question 2.7 lecture de ligne
écrire la méthode :
- public String lireLigne (String question)
-
affiche question puis
lit une ligne sur l'entrée/sortie standard. exemple :
MaConsole c= new MaConsole();
...
s= c.lireLigne("Bonjour quel est votre nom ?");
Cette méthode ne doit pas renvoyer d'exception. En cas de problème
(fin de fichier ou autre), elle renvoie null.
Question 2.8 lecture d'entier
écrire la méthode :
- public int lireEntier (String question)
-
affiche question, puis
lit un entier sur l'entrée/sortie standard. Si la ligne de texte
tapée ne correspond pas à un entier, repose la question jusqu'à ce
que la réponse soit bonne.
Dans le cas où une fin de fichier est rencontrée, lireEntier doit
renvoyer 0.
Question 2.9 lecture d'entier avec erreur possible
écrire la méthode
- public int lireCommeEntier (String question)
-
affiche question, puis lit la ligne entrée par
l'utilisateur, et essaye de l'interpréter comme un entier. Si ce
n'est pas le cas, une exception est propagée.
Attention !! du fait d'une certaine incohérence dans la
gestion des chaînes en java, la méthode parseInt, si on lui
fournit comme argument une chaîne égale à null, renvoie un
NumberFormatException au lieu d'un
NullPointerException qui serait plus logique. Dans
lireCommeEntier, si le fichier est terminé (et que la
chaîne lue est null), on veut renvoyer une
NullPointerException ou une EOFException au choix.
Question 2.10 Correction de lireEntier
Il est assez maladroit de
renvoyer 0 en cas de fin de fichier, puisque c'est une valeur possible
pour un entier d'une part, et que d'autre part c'est une méthode de
traitement d'erreur « artisanale ».
Modifiez lireEntier pour qu'elle renvoie une
EOFException (type déjà existant) dans le cas où il n'y a
plus de texte à lire.
Question 2.11
On voudrait créer pour notre classe une exception
spécifique, qui serait nommée MauvaiseEntreeException. Les
données associées seraient :
- un message d'erreur, "Mauvaise entree : " + l'entrée erronée
- l'entrée erronée ;
- la question posée.
Implémentez cette classe, et utilisez-la pour lireCommeEntier.
Question 2.12
écrivez une méthode lireCommeLigneNonVide, qui lise
une ligne non vide. Si la ligne est vide, la méthode doit renvoyer une MauvaiseEntreeException.
suivant: À propos de ce
Serge ROSMORDUC
2003-09-29