[Précédent] |
5.11 |
Césure - Corrigé | Niveau 2 |
||
Fichiers: |
Cesure.java |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
import java.util.Scanner; class Cesure { 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() { Scanner scanner = new Scanner(System.in); 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(); } scanner.close(); 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 true si c est une voyelle et false 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 true si s ne contient que des voyelles et false sinon */ static boolean queVoyelles(String s) { for (int i = 0; i < s.length(); i++) { if (!voyelle(s.charAt(i))) { return false; } } return true; } } |
[Précédent] |