Inverser les mots d'une phrase et non les caractères [Résolu]

Messages postés
29
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
23 octobre 2016
- - Dernière réponse : ramadela
Messages postés
29
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
23 octobre 2016
- 15 mai 2012 à 20:18
salut
donc voici un nouveau problème que j'ai rencontré dans java est comme suit:
inverser les mots d'une phrase , le premier sera le dernier et le contraire par exemple : Ex : « je suis étudiant en master » devient « master en étudiant suis je »
et voici mon programme mais ne fait rien :
String phrase = "je suis étudiant en master";
for (int i = phrase.length(); i<= 0 ; i--){
    if (phrase.charAt() == ' '){
        int n = phrase.indexOf(' ', i+1);
        for (int k = i; k<= n ; k++){
            System.out.print(phrase.charAt(k));
}
}
}

et merci
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
29
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
23 octobre 2016
3
Merci
MERCI les amies c'est bon j'ai trouvé la solution
String x = "je suis étudiant en master";
String[] parts = x.split(" ");
StringBuilder sb = new StringBuilder();
for(int i = parts.length - 1; i >= 0; i--){
      sb.append(parts[i]);
      sb.append(" ");
      }
System.out.println(""+sb);
}   

Ramadela

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ramadela
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
Salut,

La même chose en bien moins de lignes :

String phrase = "je suis étudiant en master";
String mots = phrase.split("\\p{Space}");
for(int i=phrase.length; i>=0; i++){
    System.out.print(mots[i]+" ");
}
Commenter la réponse de cs_Julien39
Messages postés
29
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
23 octobre 2016
0
Merci
merci julien39 de votre réponse
après que j'ai modifier mon programme comme vous m'avez donner il m'affiche : change type of mots to String[], à la ligne correspondante à la ligne 1 de votre programme donc j'ai corrigé cette faute , mais aprés exécution
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 26
at exemple6classestring.Main.main(Main.java:29)
et la ligne 29 correspond à la ligne 4 de votre programme et ne fait rien
ramadela
Commenter la réponse de ramadela
0
Merci
Salut,

String phrase = "je suis étudiant en master";
         String[] mots = phrase.split(" +"); // motif 1 ou plusieurs espaces
         //for (String s : mots) System.out.println(s);
      	
         String phraseInverse = "";
         for(int i = mots.length -1; i>= 0; i--)
         phraseInverse+= mots[i] + " ";
         phraseInverse = phraseInverse.trim(); // enlève le dernier espace
      	
         System.out.println("phraseInverse = " + phraseInverse);

Cordialement,

...\ Dan /...
Commenter la réponse de Utilisateur anonyme
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
danimo a corrigé mon erreur, il faut commencer à phrase.length-1.

Si tu utilises la méthode de phrase.length, préfère la regex \\p{Space}+ qui prendra aussi les tabulations.
Commenter la réponse de cs_Julien39