Où est l'erreur ? - Java - Programmation
Marsh Posté le 24-11-2003 à 17:46:25
if(bla[0].equals("ERR" ))
ça devrait aller comme test
Marsh Posté le 24-11-2003 à 17:48:31
Oui impec merci
Mais pourquoi est ce que ca n'allais pas alors que l'output affichait bien ERR ?
edit: parcque l'output c'était bla[0].toString() et le test se faisait sur l'adresse de bla[0] ?
Marsh Posté le 24-11-2003 à 17:50:17
== : teste l'égalité de la référence (valeur du pointeur)
equals() : teste l'égalité de l'objet (même valeur au sens définit par l'objet. Pour les String, equals signifie même chaine de caractère)
Marsh Posté le 24-11-2003 à 17:51:36
WhatDe a écrit : Oui impec merci |
L'opérateur == compare les références. ta comparaison bla[0] == "ERR" aurait été vraie si les deux chaines avaient été la même. Or la, ce sont deux chaines distinctes, même si elles contiennent les mêmes caractères.
Marsh Posté le 24-11-2003 à 17:58:10
ça devrait pas exister les opérateurs en programmation objet
Marsh Posté le 24-11-2003 à 17:59:10
Harkonnen a écrit : ça devrait pas exister les opérateurs en programmation objet |
Ca depend... = c'est quand même bien pratique;
Marsh Posté le 24-11-2003 à 18:37:57
Tant que leur utilité est parfaitement claire, les opérateurs sont très pratiques. Et ils ne nuisent pas à la lisibilité (quant à l'efficacité, c'est hors de propos, puisque derrière, opérateur ou pas, la machine fait un classique appel de fonction).
En Ada, par exemple, il existe de nombreux opérateurs que l'utilisateur peut surcharger. Et Ada est considéré comme un des langages les plus efficaces du point de vue lisibilité.
Java a également adopté une définition claire des quelques opérateurs qu'il propose. Le problème avec le == sur des chaînes, c'est qu'il heurte la conception communément admise par beaucoup de programmeurs selon laquelle les chaines de caractères sont des atomiques. Ce qu'elles ne sont pas en Java...
Marsh Posté le 24-11-2003 à 17:45:16
Ca me donne en output:
En gros le test if(bla[0] == "ERR" ) ne marche pas, j'ai l'impression que ca vient de l'utilisation du tableau.
J'ai retourné tout dans tous les sens, je trouve pas mon erreur
Merci de m'aider