Exercice Java corrigé programme de césure modularisation

import java.util.Scanner;
class Cesure {
    private static Scanner scanner = new Scanner(System.in);
  public static void main(String[] args) {
    String[] phrase = lirePhrase();
    System.out.println("Le résultat est : ");
    for (int i = 0; i < phrase.length; i++) {
      cesure(phrase[i]);
    }
  }
  /**
   * Lit une phrase depuis le terminal.
   * @return un tableau de Strings où chaque entrée
   * est un mot de la phrase lue.
   */ 
  static String[] lirePhrase() {
    int number = 0;
    while (number <= 0) {
      System.out.print("Donnez le nombre de mots de votre phrase : ");
      number = scanner.nextInt();
      if (number <= 0) {
        System.out.println("Entrez une valeur plus grande que 0");
      }
    }    
    String[] phrase = new String [number];

    // se debarasser du \n 
    scanner.nextLine();
    for (int i = 0; i < number; i++) {
      System.out.print("Donnez le mot " + (i + 1) + " : ");
      phrase[i] = scanner.nextLine();
    }
    return phrase;
  }
  /**
   * Réalise la césure pour un mot donné
   * Pour ce faire, examine les différentes façons de couper
   * le mot: entre l'indice debut et l'indice i et entre i et 
   * la longueur du mot (i variant de 1 à la longueur du mot et 
   * debut étant initialisé à 0).
   * Si la régle de césure s'applique à ces deux parties
   * afficher le "-" et passer à la ligne suivante.
   * Puis, faire le même traitement en considérant la portion de mot
   * entre i et longueur du mot (debut prend la valeur de i)
   * @param mot une String représentant un mot de la phrase
   */ 
  static void cesure(String mot) {
    int debut = 0;
    for (int i = 1; i < mot.length(); i++) {
      char c1 = mot.charAt(i - 1);
      char c2 = mot.charAt(i);
      if ((voyelle(c1) && !voyelle(c2))) {
        String s1 = mot.substring(debut, i);
        String s2 = mot.substring(i, mot.length());
        if ((s1.length() > 1) && (s2.length() > 1)) {
          if (!(queVoyelles(s1) || queVoyelles(s2))) {
            System.out.println(s1 + "-");
            debut = i;
          }
        }
      }
    }     
    String s1 = mot.substring(debut, mot.length());
    System.out.println(s1);
  }
  /**
   * Teste si un caractère est une voyelle
   * @param c le caractère à tester
   * @return vrai si c est une voyelle et faux sinon
   */ 
  static boolean voyelle(char c) {
    return ((c == 'a') ||
        (c == 'e') ||
        (c == 'i') ||
        (c == 'o') ||
        (c == 'u') ||
        (c == 'y'));
  } 
  /**
   * Teste si une chaîne de caractères ne contient que des voyelles
   * @param s la chaîne à tester
   * @return vrai si s ne contient que des voyelles et faux sinon
   */ 
  static boolean queVoyelles(String s) {
    for (int i = 0; i < s.length(); i++) {
      if (voyelle(s.charAt(i)) == false) {
        return false;
      }
    }
    return true;
  }
}

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *