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

Résolu/Fermé
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 30 juin 2015 à 21:33
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 1 juil. 2015 à 18:42
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 30/06/2015 à 22:17
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 samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 2
1 juil. 2015 à 06:40
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 juil. 2015 à 08:31
"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 samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 2
Modifié par moi411 le 1/07/2015 à 18:42
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