Ce code sépare une chaîne de caractères en jetons et les stocke dans un tableau de chaînes de caractères, puis compare une variable avec la première maison ... pourquoi cela ne fonctionne-t-il pas ?
public static void main(String...aArguments) throws IOException {
String usuario = "Jorman";
String password = "14988611";
String strDatos = "Jorman 14988611";
StringTokenizer tokens = new StringTokenizer(strDatos, " ");
int nDatos = tokens.countTokens();
String[] datos = new String[nDatos];
int i = 0;
while (tokens.hasMoreTokens()) {
String str = tokens.nextToken();
datos[i] = str;
i++;
}
//System.out.println (usuario);
if ((datos[0] == usuario)) {
System.out.println("WORKING");
}
}
1 votes
Jetez un coup d'œil à ceci thejavageek.com/2013/07/27/
3 votes
"Changez datos[0] == usuario en datos[0].equals(usuario) pour obtenir la réponse correcte.
2 votes
Je vois que vous avez modifié votre réponse acceptée - je vous invite à lire mes commentaires à ce sujet et à reconsidérer votre décision. L'"histoire" de la réponse maintenant acceptée peut sembler bonne au départ, mais, à mon avis, elle ne résiste pas à un examen approfondi.
0 votes
Cet article peut vous aider à comprendre cela.
0 votes
La plupart des langages fonctionnent de cette façon, mais vous ne le voyez pas parce que la plupart des langages ont une surcharge d'opérateurs et l'opérateur == pour les chaînes de caractères a été surchargé pour appeler l'équivalent de string.equals. Java n'a pas de surcharge d'opérateurs, donc vous devez le faire de la manière forte, comme un homme des cavernes. Java ne se plaint pas non plus et ne vous avertit pas lorsque vous comparez des chaînes de caractères de cette manière, ce qui devient une erreur d'exécution que vous devez traquer. Pourquoi Java n'a-t-il pas de surcharge d'opérateurs ? Parce qu'ils voulaient garder le langage simple, puis ils ont réalisé qu'il était trop simple et ont rendu le travail avec les dates compliqué.