programmation Java (école d'ingénieur) · Chapitre 14 · Exercice de TD
Premier écart
Fichiers et flux · niveau 2
Énoncé
Écrire une méthode static int premierEcart(Path p, Path q) qui renvoie le numéro de la première ligne où les deux fichiers diffèrent, ou s'ils sont identiques. Si l'un des fichiers est plus court que l'autre, la première ligne qui manque compte comme une différence.
Corrigé
Objects.equals compare deux chaînes dont l'une peut être null : il couvre le cas d'un fichier plus court.
static int premierEcart(Path p, Path q) throws IOException {
try (BufferedReader a = Files.newBufferedReader(p); BufferedReader b = Files.newBufferedReader(q)) {
int numero = 1;
while (true) {
String la = a.readLine(), lb = b.readLine();
if (la == null && lb == null) return 0; // identiques
if (!Objects.equals(la, lb)) return numero; // gère aussi un fichier plus court
numero++;
}
}
}
Avec v1.txt = un, deux, trois, quatre ; v2.txt = un, deux, TROIS, quatre ; v3.txt = un, deux :
v1 / v2 : 3
v1 / v1 : 0
v1 / v3 : 3100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.