Comment imprimer plusieurs cordes à l'arrière, en Java
Je suis en train de prendre un fichier plein de chaînes, à le lire, puis imprimer un certain nombre de choses:
- La chaîne
- La chaîne vers l'arrière ET en majuscules
- La longueur de la chaîne
Il y a un peu plus de choses, cependant, je n'ai pas encore arrivée à ce point et ne veulent pas de demander à quelqu'un pour écrire le code entièrement pour moi. Après de déconner avec elle pendant un certain temps, je l'ai presque terminé (je crois, à l'exception de quelques zones).
La pièce de déclenchement me up est le mot en arrière. Nous sommes obligés de mettre notre sortie parfaitement dans les colonnes à l'aide de prinf, mais je ne peux pas faire ce que j'ai lu à chaque caractère à la fois. J'ai donc essayé de fixer un String backwardsWord = "";
et l'ajout de chaque personnage.
C'est la pièce qui est de déclenchement:
for(int i = upperCaseWord.length() - 1; i >= 0; i--)
{
backwardsWord += (upperCaseWord.charAt(i) + "");
}
Mon problème est que lorsque je l'imprimer, le premier mot qu'elle fonctionne correctement. Cependant, chaque mot est ajouté au mot précédent.
Par exemple: si j'ai l'impression de chat, le chien et le rat à l'envers, il montre
TAC
TACGOD
TACGODTAR
Je veux évidemment à lire
TAC
DIEU
GOUDRON
Toute aide serait appréciée.
Êtes-vous de l'initialisation de la vaeiable bacKwardsWord à chaque fois avant la boucle
Vous devriez regarder dans
StringBuilder.reverse()
Sa va être capable de faire tout votre marche arrière pour vous facilement.OriginalL'auteur S12 | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Il ressemble à votre variable
backwardsWord
est toujours l'ajout d'un caractère sans être remis à zéro entre les mots. La solution la plus simple est d'effacer labackwardsWord
juste avant votre boucle par la valeur de chaîne vide.Si vous êtes à la construction d'une Chaîne d'un caractère à la fois vous serez en utilisant beaucoup de mémoire, car Java, les Chaînes sont immuables.
Pour ce faire utiliser plus efficacement un StringBuilder à la place. C'est fait pour construire des personnages comme ce que vous faites. Une fois que vous avez terminé, vous pouvez utiliser le
toString
méthode pour obtenir la Chaîne de caractères.Ceci a l'avantage supplémentaire de la réinitialisation de la backwardsWord à chaque fois.
Enfin, étant donné que votre objectif est d'obtenir la Chaîne dans le sens inverse, nous pouvons le faire sans une boucle à tous comme indiqué dans cette réponse
Cela crée un nouveau
StringBuilder
avec les personnages deupperCaseWord
, inverse les caractères, puis les magasins de la chaîne finale dansbackwardsWord
OriginalL'auteur n00begon
Où en êtes-vous de déclarer la Chaîne backwardsWord?
Si vous n'avez pas clair entre les mots, puis l'espace mémoire alloué à cette chaîne contient toujours les déjà ajouté des personnages.
Assurez-vous de jeter un backwardsWord = ""; entre les mots pour réinitialiser la valeur et qui devrait résoudre votre problème.
Sans voir plus de ton code je ne peux pas vous dire exactement où le mettre.
OriginalL'auteur miss.serena
Cela devrait faire le travail ->
Oui et le résultat est - SEL SELBARÉSIM
il a travaillé comme prévu..
OriginalL'auteur dganesh2002