Adloun

programmation Java (école d'ingénieur) · Chapitre 7 · Exercice de TD

Chasser les erreurs

Classes et objets · niveau 1 (application)

Énoncé

Le programme suivant contient deux erreurs. L'une est détectée par le compilateur, l'autre non. Les trouver, expliquer le message du compilateur et corriger le programme pour qu'il affiche 1.0 2.0 puis 0.0.


class Point {
    double x, y;

    Point(double x, double y) {
        x = x;
        y = y;
    }
}

public class Ex4Erreurs {
    public static void main(String[] args) {
        Point p = new Point(1, 2);
        System.out.println(p.x + " " + p.y);
        Point q;
        System.out.println(q.x);
    }
}

Corrigé

La compilation échoue :


Ex4Erreurs.java:15: error: variable q might not have been initialized
        System.out.println(q.x);
                           ^
1 error

Une variable locale n'a pas de valeur par défaut : q est déclarée mais n'a jamais reçu de valeur, pas même null, et le compilateur refuse qu'on la lise. On corrige avec Point q = new Point(0, 0);.

La seconde erreur est invisible au compilateur : dans le constructeur, x = x; affecte le paramètre à lui-même, et les attributs restent à . Une fois la première erreur corrigée, le programme afficherait 0.0 0.0. Il faut écrire this.x = x; et this.y = y;. Le programme corrigé affiche :


1.0 2.0
0.0

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →