Adloun

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

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 →