Obtenir le premier caractère de chaque mot dans une Chaîne de caractères
Je suis en train de mettre en place un programme de travail qui effectue les opérations suivantes:
Disons que nous avons un String
appelé name
, mis à "Stack Overflow Exchange"
. Je veux de sortie à l'utilisateur "SOE"
, avec les premiers caractères de chaque mot. J'ai essayé avec le split()
méthode, mais je n'ai pas réussi à le faire.
Mon code:
public class q4 {
public static void main(String args[]) {
String x = "michele jones";
String[] myName = x.split("");
for(int i = 0; i < myName.length; i++) {
if(myName[i] == "") {
String s = myName[i];
System.out.println(s);
}
}
}
}
Je suis en train d'essayer de détecter si il y a un espace, alors je peux tout simplement prendre le prochain indice. Quelqu'un pourrait-il me dire ce que je fais de mal?
Je sais que ce n'est pas votre problème, mais
myName[i] == ""
est mauvais de deux façons. 1.) Vous utilisez ==
de comparer String
s, ce qui est erroné. 2.) Au lieu de comparer une String
avec ""
, utilisez le isEmpty()
méthode de String
.OriginalL'auteur farhana konka | 2014-10-03
Vous devez vous connecter pour publier un commentaire.
Essayez de diviser par
" "
(espace), puis obtenir lecharAt(0)
(premier caractère de chaque mot et de l'impression de cette façon:OriginalL'auteur brso05
Cela fonctionne de cette façon :
EDIT :
Comme l'a suggéré, la concaténation de chaîne n'est pas souvent efficace, et StringBuilder est une meilleure alternative si vous travaillez sur de très longues chaînes :
EDIT :
Vous pouvez obtenir une Chaîne en un tableau de caractères simplement :
For statements
sans les accolades mal. S'il vous plaît ajouter des accolades.Merci mec, Comment faire si je veux stocker toutes les initiales dans le tableau ,
OriginalL'auteur Simone Gianni
Il y a un certain nombre d'erreurs dans votre code:
Avez-vous vraiment envie de se diviser sur les
""
(chaîne vide)? Vous avez probablement voulu diviser sur des espaces:Et:
Ne jamais comparer des chaînes de caractères avec
==
en Java, utilisez toujours.equals
:OriginalL'auteur Jesper
Avec Java 8 flux:
OriginalL'auteur Jeffrey Bosboom
Vous fractionnement sur une chaîne vide pas un espace " ". Vos boucles ne sont pas vraiment beaucoup de sens non plus, je ne suis pas sûr de ce que vous essayez de faire.
OriginalL'auteur Tim B
Vous devez versé avec un espace que vous ne pouvez pas diviser avec "". Cela ne veut pas dire quoi que ce soit.
Une autre chose que vous avez fait de mal a === en comparaison de chaînes de caractères qui n'est pas correct. Veuillez vous référer à Comment puis-je comparer les chaînes de caractères en Java?
OriginalL'auteur StackFlowed
Puisque vous n'avez pas thread-safe avec votre programme, vous pouvez utiliser
StringBuilder
.Pour la longue chaîne, je le conseille vous pouvez utiliser
StringTokenizer
.StringBuffer
, sauf si vous avez un très une bonne raison pour 3.) Comme indiqué dans leStringTokenizer
docs, son usage est déconseillé dans le code.Désolé, il devrait être
StringBuilder
. Je vous remercie de me le faire savoir, je n'ai pas lu StringTokenizer Api soigneusement.OriginalL'auteur Jake Huang
La accepté de répondre dans Java 8:
OriginalL'auteur Marco Tulio Avila Cerón