L'inversion de caractères de chaque mot dans une phrase de la Pile de la mise en Œuvre

Ce code est à l'intérieur de la main fonction:

Scanner input = new Scanner(System.in);

System.out.println("Type a sentence");
String sentence = input.next();

Stack<Character> stk = new Stack<Character>();
int i = 0;

while (i < sentence.length())
{
    while (sentence.charAt(i) != ' ' && i < sentence.length() - 1)
    {
        stk.push(sentence.charAt(i));
        i++;
    }
    stk.empty();
    i++;
}

Et c'est le empty() fonction:

public void empty()
{
    while (this.first != null)
        System.out.print(this.pop());
}

Il ne fonctionne pas correctement, comme par à taper example sentence j'obtiens ce résultat: lpmaxe. La première lettre est absente et la boucle s'arrête au lieu de compter les dernières de l'espace pour la prochaine partie de la phrase.

Je suis en train de réaliser ceci:

This is a sentence ---> sihT si a ecnetnes

  • Il y a une différence subtile entre inverser les mots dans une phrase et les personnages dans une phrase. Que de fois voulez-vous obtenir?
  • Je veux inverser les caractères de chaque mot dans la phrase, tout en gardant le même ordre des mots. Et vous pourriez dire que c'est les devoirs, je suis juste à la recherche en ligne pour des questions afin d'améliorer ma compréhension sur la pile & file d'attente.
  • Avez-vous essayé de vérifier que la valeur de sentence est, et/ou en ce que la documentation de Scanner.next() dit qu'il va faire?
  • next() obtient seulement un mot. Votre double boucle n'est pas de faire quoi que ce soit après le premier tour.
  • si c'est les devoirs, le marquer comme tel.
InformationsquelleAutor amiregelz | 2012-07-18