Vous êtes sur la page 1sur 2

Programmation Orientée Objet Avancée

TD 2– Les entrées / Sorties Java


Exercice 1 :
a. Nous considérons un fichier in.txt permettant de stocker les numéros de carte d’étudiants
de plusieurs étudiants. Le fichier contient plusieurs lignes avec sur chacune le numéro de
ligne suivi par le numéro de carte séparé par un tiret (voir exemple ci-dessous). Ecrire un
programme java permettant de demander à l’utilisateur de saisir l’emplacement du fichier
in.txt, de lire le fichier et d’afficher sur la sortie standard les numéros de carte d’étudiants
seulement. Vous pouvez utiliser pour cela la fonction split qui permet de découper une
chaine de caractère en utilisant une expression régulière passée en paramètre comme
séparateur.

1- 1000
2- 1345
3- 3456
4- 3448
Public String [ ] split ( String regex)

Le résultat de l’affichage est :


1000
1345
3456
3448

b. Le fichier en entrée contient également pour chaque étudiant plusieurs notes de contrôle
continu. Ainsi chaque ligne contient le numéro de la ligne, le numéro de carte d’étudiant
d’un étudiant suivi de plusieurs notes séparés par des tirets (le nombre de notes pour chaque
étudiant peut être différent). Ecrire un programme permettant de créer un fichier moy.txt
qui contient les numéros de carte d’étudiants des étudiants suivis par leur moyenne (note 1
+ note2+….+note n)/nombre total des notes de chaque étudiant. Votre programme doit
afficher à la fin la moyenne de toute la classe (somme des moyennes/nombre total
d’étudiants). Vous pouvez utiliser cela la fonction split vu précédemment ou instancier la
classe StringTokenizer qui permet à une application de découper une chaîne de caractères
en tokens séparés par des délimiteurs. Un token est la plus grande séquence de caractères
entre des délimiteurs tel que :
StringTokenizer st = new StringTokenizer("ceci est\n un\t test", " \t\n");
while (st.hasMoreTokens())
System.out.println(st.nextToken());
System.out.println(st.nextToken());
ceci
est
un
test

Ines THABET Page 1


Programmation Orientée Objet Avancée

Exercice 2 :
a. Ecrire un exercice qui permet de lire un fichier contenant des nombres séparés par des
virgules data.txt et qui permet de les copier dans un fichier dataout.txt dans l’ordre inverse.
b. Nous considérons un fichier de données qui contient un ensemble d'entiers non nuls. Ecrire
un programme permettant d’afficher sur la sortie standard les entiers distincts (sans
répétions). Par exemple si votre tableau est composé de : 3 4 2 8 9 1 3 8 4 2 8 2 8 1 3.
Il y’a affichage de 3, 4, 2, 8, 1

Exercice 3 :

Soit la classe utilisateur décrite par : un nom d’utilisateur de type chaine de caractère et une
chaine de caractère mot de passe. La classe utilisateur dispose d’un constructeur paramétré et
d’une méthode toString() permettant d’afficher les données d’un utilisateur. Nous disposons
également d’une classe liste utilisateur avec un HashSet qui permet d’enregistrer des
utilisateurs sans doublons. La classe liste utilisateur dispose d’un constructeur par défaut, d’une
méthode ajouter et supprimer qui permettent respectivement d’ajouter et supprimer un
utilisateur donné en paramètre. La deuxième méthode renvoie un boolean true si elle s’exécute
correctement (utilisateur trouvé) et un boolean false sinon. Elle dispose également d’une
méthode affiche qui permet d’afficher la liste des utilisateurs.
Nous désirons enregistrer la liste des utilisateurs dans un fichier. Attention, le mot de passe ne
doit pas figurer dans le fichier. Pour cela vous devez le précéder par le mot clé transient pour
qu’il ne figure pas dans le fichier de sérialisation.
a. Ecrire une procédure serialize qui prend en paramètre un hashSet d’utilisateur et permet de
l’enregistrer sur un fichier data.obj
b. Ecrire une procédure deserialize qui permet de désérialiser le fichier data.obj et de retourner
un hashSet d’utilisateur.
c. Ecrire une méthode main qui permet de tester les fonctionnalités en ajoutant plusieurs
utilisateurs, puis en les affichant avant et après la sérialisation.

Exercice 4 :
Ecrire un programme traduction.java qui permet à l’utilisateur de saisir un mot au clavier, de
le rechercher dans un fichier en entrée que vous alimenterez ou trouverez en ligne, et renvoie
si le mot existe dans le dictionnaire sa traduction en anglais. Si le mot n’existe pas, un message
mot introuvable est renvoyé à l’utilisateur.
Votre fichier en entrée devra contenir au moins une centaine de mots. Ainsi votre programme
devra d’abord trier votre fichier selon un ordre alphabétique . De même vu que le nombre de
mots présents dans le dictionnaire peut être élevé, évitez de faire une recherche séquentielle en
parcourant tout le dictionnaire avec une boucle for. Pensez à utiliser une méthode de recherche
plus efficace.

Ines THABET Page 2