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

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. mais ta que c'est les séparateur sont des espaces??
      On a beaucoup de séparateur (, ; : . etc...)
      1. 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.