Adloun

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 : 3

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →