Problème JAVA (chaine de caractère) aidé moii

devlopMan -  
 danimo -
Salut tout le monde
SVP j'ai besoin d'aide
exercice qui dit :
Introduire une chaine de caractère, analyser cette chaine de caractère et déterminer chaque mot dans cette chaine de caractère (deux mot sont séparer par ,/;/./etc...)
Trier ces mot par ordre d'apparition et par ordre alphabétique
mon problème a moi est comment implémenter les mots dans un tableau pour les trier
S'il existe une autre méthode SVP aidé moi????

4 réponses

  1. danimo
     
    Salut,
    Tout est faisable en utilisant la classe Pattern (import java.util.regex.Pattern;)

    D'abord la méthode compile:
    Pattern pat = Pattern.compile(" +");// le séparateur des mots est logiquement un espace (" ")
    Par précaution on considère qu'il peut y avoir plusieurs espaces entre les mots (" +")

    Ensuite pour mettre les mots dans un tableau on utiise la méthode split
    String[] tableauDesMots = pat.split(uneChaine);

    Il reste à trier le tableau à l'aide de la méthode sort de la classe Arrays (import java.util.Arrays;):
    Arrays.sort(tableauDesMots); //Tri du tableau en ordre croissant

    Exemple:
    La chaine contient des mots réduits à un seul caractère ce qui permettra de constater facilement que le tri est bien effectué.
    String uneChaine = "q w e r       t y u i o p   a s d f g h j k l z x c    v b n m"; 
    Pattern pat = Pattern.compile(" +"); // le séparateur est un ou plusieurs  espaces (motif " +")
     
    // éclatement en sous-chaînes 
    String[] tableauDesMots = pat.split(uneChaine); 
              
    // vérifions le contenu du tableau 
    System.out.println("Avant tri:"); 
    for(int i = 0; i <tableauDesMots.length; i++) 
    System.out.println(i+1 + "  " + tableauDesMots[i]); 
                 
    Arrays.sort(tableauDesMots); //Tri du tableau en ordre croissant 
              
    System.out.println("\nAprès tri:"); 
           
    for(int i = 0; i <tableauDesMots.length; i++) 
    System.out.println(i+1 + "  " + tableauDesMots[i]); 
    


    Cordialement,

    Dan
    Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
    0
  2. DevlopMan
     
    mais ta que c'est les séparateur sont des espaces??
    On a beaucoup de séparateur (, ; : . etc...)
    0
  3. danimo
     
    Salut,

    Donc en fait les séparateurs sont des "non mot"
    On peut donc remplacer (par programme) ces "non mot" par un espace:

    String uneChaine = "q w, e r       t y u: i o p   a s d f g h j k. l z? x c    v b n m";
             
             uneChaine = uneChaine.replaceAll("\\W", " "); // remplacer de tous les non mot par un espace
             System.out.println(uneChaine); // il ne reste plus que les espaces
             Pattern pat = Pattern.compile(" +"); // le séparateur est un ou plusieurs  espaces (motif " +")
             
          	// éclatement en sous-chaînes
             String[] tableauDesMots = pat.split(uneChaine);
             
             // vérifions le contenu du tableau
             System.out.println("Avant tri:");
             for(int i = 0; i <tableauDesMots.length; i++)
                System.out.println(i+1 + "  " + tableauDesMots[i]);
                
             Arrays.sort(tableauDesMots); //Tri du tableau en ordre croissant
             
             System.out.println("\nAprès tri en ordre croissant:");
          
             for(int i = 0; i <tableauDesMots.length; i++)
                System.out.println(i+1 + "  " + tableauDesMots[i]);
                
          		// pour lister les mots en ordre décroissant lire par la fin: 
             
             System.out.println("\nListe en ordre décroissant:");
             for(int i = (tableauDesMots.length - 1); i > -1; i--)
                System.out.println(i+1 + "  " + tableauDesMots[i]);
    


    Dan
    0