programmation Java (école d'ingénieur) · Chapitre 7 · Exercice de TD
Des durées
Classes et objets · niveau 2
Énoncé
Écrire une classe Duree (heures, minutes, secondes, avec minutes et secondes dans ) ayant deux constructeurs : Duree(int totalSecondes) et Duree(int h, int m, int s), ce dernier acceptant des valeurs non normalisées comme h min. Ajouter enSecondes(), plus(Duree d) (qui retourne une nouvelle durée) et toString() au format h:mm:ss. Calculer h min s.
Corrigé
Le constructeur à un paramètre fait la normalisation ; celui à trois paramètres convertit en secondes et délègue, ce qui accepte gratuitement les valeurs non normalisées.
class Duree {
int heures, minutes, secondes; // minutes et secondes dans [0, 60)
Duree(int totalSecondes) {
heures = totalSecondes / 3600;
minutes = (totalSecondes % 3600) / 60;
secondes = totalSecondes % 60;
}
Duree(int h, int m, int s) {
this(3600 * h + 60 * m + s); // normalise, par exemple 0 h 90 min
}
int enSecondes() { return 3600 * heures + 60 * minutes + secondes; }
Duree plus(Duree d) { return new Duree(enSecondes() + d.enSecondes()); }
@Override
public String toString() { return String.format("%d:%02d:%02d", heures, minutes, secondes); }
}
public class Ex9Duree {
public static void main(String[] args) {
Duree d1 = new Duree(1, 45, 30);
Duree d2 = new Duree(0, 90, 45);
System.out.println(d1 + " + " + d2 + " = " + d1.plus(d2));
System.out.println(new Duree(10000));
}
}
1:45:30 + 1:30:45 = 3:16:15
2:46:40
Le format %02d écrit l'entier sur deux chiffres, complété par un zéro à gauche. La méthode plus ne modifie ni this ni d : elle retourne un nouvel objet.
100 % 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.