String.equals(String) ne fonctionne pas...

Résolu
moi411 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -  
moi411 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
Comme dit dans le titre, j'ai 2 chaines de caractères que je dois comparer.
J'utilise:
if(a.equals(b)){ ... }
Pour le test, a est identaique à b mais je ne rentre quand-même pas dans le "if"!
Merci d'avance et bonne soirée!



--

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

L'erreur est forcément ailleurs, il faudrait voir le code complet.

Tu devrais aussi afficher
a
et
b
pour voir quelles sont les différences :

System.out.println(java.util.Arrays.toString(a.getBytes()));
System.out.println(java.util.Arrays.toString(b.getBytes()));
La confiance n'exclut pas le contrôle
0
moi411 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   2
 
Ré,
En fait j'ai un fichier avec des dates et des tarifs.
Je compare les dates et les tarifs après lecture du fichier (tout ça au format String).
Pour les dates, aucun problème mais pour les tarifs, ça déconne!
J'ai bien les mêmes chaînes (les affichages sont identiques et de même taille) et tout est bien dans un format String ; Je fais les éventuelles conversions par après !

La condition: if(a.equals(b) && c.equals(d))

Et merci de ta réponse!--
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"les affichages sont identiques et de même taille"
L'affichage ne compte pas seul l'encodage compte, d'où l'intérêt de l'affichage de getBytes(), tu peux par exemple avoir des espaces différents (space et nbsp) indifférentiables "à la vue".

Alors affiches le tableau d'octets avec le code que j'ai fourni ci-dessus pour chaque couple de String que tu compares. Mais en aucun cas ce n'est la méthode equals qui est fausse...
0
moi411 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   2
 
Re,
Bon et bien j'ai trouvé (grace à getBytes()!) et effectivement je me suis rendu compte que j'ai mal coupé ma chaine de caractères (via substring) et un espace est resté!

Bref, je te remercie pour ton aide et je garde précieusement getBytes...
--
0