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.0100 % 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 podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
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.