Exercices de Manipulation des Chaînes en JavaExercices de Manipulation des Chaînes en Java

 

Contexte : Hôpital du District de Dschang

L’Hôpital du District de Dschang, situé au Cameroun, est un centre médical de référence offrant des services de santé variés aux patients. Face à une demande croissante de soins, l'hôpital a développé un système informatique pour gérer ses opérations internes, notamment l'administration des patients, la gestion des médicaments, et le suivi des traitements. Ce système repose fortement sur la manipulation des chaînes de caractères en Java pour traiter les informations des patients, telles que les noms, les diagnostics, et les prescriptions médicales. Le bon fonctionnement de ce système est essentiel pour garantir un service efficace.

Objectif des exercices

Ces exercices sont conçus pour évaluer et renforcer votre compréhension de la manipulation des chaînes de caractères en Java, en vous plongeant dans des scénarios réalistes liés à la gestion des patients à l'hôpital. Ils couvrent les concepts clés des classes String, StringBuffer, et StringBuilder, en mettant l'accent sur des opérations comme la création, la manipulation, la comparaison, la concaténation et le formatage des chaînes de caractères.

Série d'exercices

Section 1 : Questions de cours et compréhension théorique 

  1. Qu'est-ce qu'une chaîne de caractères en Java ?
    Déclarez une variable nomPatient de type String avec la valeur "Jean Dupont". Comment ce type se distingue-t-il des types primitifs ? Expliquez en vous basant sur le concept de type référence.
  2. Donner la différence entre == et equals()
    Déclarez deux variables nomMedecin1 et nomMedecin2 de type String, contenant respectivement "Dr. House" et "Dr. House". Montrez comment utiliser == et equals() pour comparer ces deux chaînes. Expliquez pourquoi les résultats pourraient être différents.
  3. Qu'es ce qu'un StringBuffer ?
    Déclarez une variable dossierPatient de type StringBuffer initialisée avec "Patient: Yankam Joel\nHistorique médical:\n". Ajoutez-y "Visite 1: 12/01/2024 - Consultation générale\n" et "Visite 2: 20/02/2024 - Bilan sanguin\n". Pourquoi serait-il préférable d'utiliser StringBuffer plutôt que String dans ce cas ?
  4. Qu'appelle t-on immutabilité des objets String ?
    Déclarez une variable diagnostic de type String contenant "Diabetes Mellitus". Modifiez cette chaîne en ajoutant " Type 2". Que se passe-t-il en termes d'immutabilité ? Quels sont les avantages dans un environnement multi-thread ?
  5. Quel est le role de la méthode  compareTo() ?
    Déclarez deux variables nomPatientA et nomPatientB de type String, contenant respectivement "Dupont" et "Durand". Utilisez compareTo() pour les trier. Écrivez le code et expliquez le résultat.

Section 2 : Analyse de code et compréhension pratique 

  1. Analyse du code avec == et equals()
    String patientName = "Marie";
    String anotherPaient = "Marie";
    if (patientName == anotherPatient) {
        System.out.println("Same patient object");
    }
    if (patientName.equals(anotherPatient)) {
        System.out.println("Same patient name");
    }
                                
    Expliquez pourquoi l'opérateur == et la méthode equals() peuvent donner des résultats différents.
  2. Déclarez une variable medicalNote de type StringBuffer initialisée avec "Patient shows symptoms of ". Ajoutez "fever, cough" à cette chaîne. Que fait la méthode append() et quel est le résultat affiché ?
  3. Soit le bout de code suivant : 
    StringBuffer symptoms = new StringBuffer("fever");
    symptoms.replace(0, 5, "cough");
    System.out.println(symptoms);
                               
    Expliquez ce que fait la méthode replace() et prédisez le résultat.
  4. Soit le bout de code suivant avec methode :  insert()
    StringBuffer prescription = new StringBuffer("Paracetamol 500mg");
    prescription.insert(11, " : ");
    System.out.println(prescription);
                                
    Quel sera le résultat de ce code et pourquoi ?
  5. Soit le bout de code suivant :
    String diagnostic = "Diabetes Mellitus Type 2";
    String condition = diagnostic.substring(9, 17);
    System.out.println(condition);
                                
    Expliquez le rôle de la méthode substring() et le résultat qu'elle produit.

Section 3 : Écriture de code 

  1. Écrivez un programme qui compare deux chaînes nomPatient1 = "Jean Dupont" et nomPatient2 = "Marie Claire" et détermine laquelle vient en premier dans l'ordre alphabétique.
  2. Déclarez une chaîne nomPatient = "Marie-Claire". Écrivez une méthode qui renvoie le nombre de caractères dans ce nom.
  3. Déclarez les variables nom = "Jean Dupont", age = 45, et idPatient = "12345". Combinez-les en une seule chaîne formatée en utilisant String.format() pour produire une sortie structurée.
  4. Déclarez une variable symptomes de type StringBuilder initialisée avec "Symptômes: ". Ajoutez "fièvre", "toux" et "maux de tête" à cette chaîne. Quel est le résultat final ?
  5. Déclarez une variable nomPatient = "Marie-Claire". Écrivez une méthode qui vérifie si la chaîne "Marie" est contenue dans nomPatient et affiche un message approprié.