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

Fermé
devlopMan - 26 déc. 2011 à 20:11
 Utilisateur anonyme - 29 déc. 2011 à 18:25
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????
A voir également:

4 réponses

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
Merci.
0
mais ta que c'est les séparateur sont des espaces??
On a beaucoup de séparateur (, ; : . etc...)
0
Utilisateur anonyme
29 déc. 2011 à 18:25
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