Exercice JAVA modularisation - rectangle

  Compléter un programme permettant de lire la largeur et la hauteur d'un rectangle  

 Modularisation

Ecrivez un programme Rectangle.java, permettant de lire la largeur et la hauteur d'un rectangle. Ce programme devra afficher, à la demande, le périmètre ou la surface du rectangle. Exemples d'exécutions:

Entrez la largeur: ...Entrez la hauteur: ...Surface ('s/S') ou perimètre ('p/P')?: ...La surface est ...

ou encore:

Entrez la largeur: ...Entrez la hauteur: ...Erreur: vous avez introduit une largeur ou une hauteur négative!

Le programme devra être bien modularisé de sorte à ce que la méthode main se présente comme suit:

123456789101112public static void main(String args[]) { double largeur = lireDonnee("largeur"); double hauteur = lireDonnee("hauteur"); boolean donneesOk = testerDonnees(largeur, hauteur); if (donneesOk) { calculer(largeur, hauteur); } else { afficherErreur(); } }

Le test sur le type de calcul se fera au moyen d'un switch.

Fichiers:


Les méthodes complétées sont commentées dans le code ci-dessous:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879import java.util.Scanner;class Rectangle { private static Scanner scanner = new Scanner(System.in); public static void main (String args[]) { double largeur = lireDonnee("largeur"); double hauteur = lireDonnee("hauteur"); boolean donneesOk = testerDonnees(largeur,hauteur); if (donneesOk) { calculer(largeur, hauteur); } else { afficherErreur(); } } /**  * La String passée en paramètre et qui prendra  * pour valeur effective "largeur" ou "hauteur", permet  * d'afficher un message plus explicite lorsque l'on demande  * à l'utilisateur d'entrer ses données.  * @return un double lu depuis le clavier  */ static double lireDonnee (String text) { System.out.print("Entrez la " + text + ": "); return (scanner.nextDouble()); } /**  * Permet de calculer un perimètre ou une surface selon le souhait   * de l'utilisateur.  * Cette méthode prend pour arguments la hauteur et la largeur  * du rectangle nécessaires au calcul. Notez qu'il n'est absolument pas  * nécessaire que les paramètres de la méthode aient le même nom que  * les variables passées en paramètre effectifs dans la méthode main  * @param l longeur du rectangle  * @param h hauteur du rectangle  */ static void calculer(double l, double h) { System.out.print("Surface ('s/S') ou perimètre ('p/P')? "); char typeCalcul = scanner.next().charAt(0); switch (typeCalcul ){ case 's': case 'S': { double surface = l * h; System.out.println("La surface est " + surface); break; } case 'p': case 'P': { double perimetre = 2 * (l + h); System.out.println("Le perimetre est est " + perimetre); break; } default: { System.out.println ("Introduire un 'p' ou un 's' s.v.p"); } } } /**  * Méthode pour tester les données fournies par l'utilisateur  * @return true si les données sont toutes deux strictement positives  */ static boolean testerDonnees(double largeur, double hauteur) { return ((largeur > 0) && (hauteur > 0)); } /**  * Affiche simplement un message d'erreur à l'écran.  **/ static void afficherErreur () { System.out.println("Erreur: vous avez introduit une largeur " + "ou une hauteur négative!"); }}
Article publié le 18 Août 2010 Mise à jour le Dimanche, 30 Août 2020 22:50 par Salim KHALIL