2015-07-17 1 views
0

Lorsque je mets "I" dans str, "C'est moi" n'est pas imprimé, Mais je mets "je" dans str, "C'est moi" est imprimé.Problèmes d'utilisation de StringTokenizer en Java?

Quelqu'un peut-il expliquer ce comportement? Voici mon code.

code:

String str = "I "; // in = "I" 

StringTokenizer st = new StringTokenizer(str, " ", false); 
String typeCharater=""; 

if(st.hasMoreTokens()) { 
    typeCharater = st.nextToken(); 
} 
} else if(typeCharater == "I") { 
    System.out.println("It is I"); 
} 
+0

Je ne pense pas que ce soit un doublon, aucune comparaison ne fonctionne vraiment ici. – SomeStudent

+0

Utilisez compareTo() au lieu de == –

+0

Modifier "} else if (typeCharacter ==" I ") {" à "if (typeCharacter.equals (" I ") {" – Shar1er80

Répondre

0

Je ne l'ai pas vraiment utilisé StringTokenizer, mais en regardant le Java Doc (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) et les exemples qu'ils ont, je pense que le problème est que votre paramètre de chaîne que vous essayez tokenize ne contient qu'une lettre, et donc il sera toujours "je"

Editer: Aussi, si la mémoire me sert bien, lorsque vous comparez des chaînes, vous voulez utiliser .equalsIgnoreCase ou l'une des autres méthodes .equal comme == peut ne pas renvoyer l'égalité, même s'ils sont égaux, en raison de la séparation du pointeur de la mémoire s.

Édition 2: De même que pour "I" vs "I" je pense que la raison peut être que la première option a déjà un espace, donc le code l'a ignoré car votre délimiteur est "".

+0

Merci, je résous le problème. :) – arubirate