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

ramadela 29 Messages postés samedi 11 décembre 2010Date d'inscription 23 octobre 2016 Dernière intervention - 12 mai 2012 à 21:34 - Dernière réponse : ramadela 29 Messages postés samedi 11 décembre 2010Date d'inscription 23 octobre 2016 Dernière intervention
- 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

Répondre au sujet
ramadela 29 Messages postés samedi 11 décembre 2010Date d'inscription 23 octobre 2016 Dernière intervention - 15 mai 2012 à 20:18
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ramadela
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 12 mai 2012 à 21:51
0
Utile
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
ramadela 29 Messages postés samedi 11 décembre 2010Date d'inscription 23 octobre 2016 Dernière intervention - 12 mai 2012 à 22:13
0
Utile
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
Utilisateur anonyme - 13 mai 2012 à 11:01
0
Utile
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
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscription 15 mars 2018 Dernière intervention - 14 mai 2012 à 09:08
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.