Où est l'erreur ?

Où est l'erreur ? - Java - Programmation

Marsh Posté le 24-11-2003 à 17:45:16    

Code :
  1. public class Test
  2. {
  3. public static void main(String[] args)
  4. {
  5.  char caractère = getType("ERR_TEST" );
  6.  System.out.println(caractère);
  7. }
  8. public static char getType(String string)
  9. {
  10.  String[] bla = new String[2];
  11.  bla = string.split("_", 2);
  12.  System.out.println("bla[0]: " + bla[0]);
  13.  System.out.println("bla[1]: " + bla[1]);
  14.  if(bla[0] == "ERR" )
  15.  {
  16.   System.out.println("ERR: TRUE" );
  17.   return 'E';
  18.  }
  19.  else
  20.  {
  21.   System.out.println("ERR: FALSE" );
  22.   return 'R';
  23.  }
  24. }
  25. }


 
Ca me donne en output:

Code :
  1. bla[0]: ERR
  2. bla[1]: TEST
  3. ERR: FALSE
  4. R


 
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  :ange:

Reply

Marsh Posté le 24-11-2003 à 17:45:16   

Reply

Marsh Posté le 24-11-2003 à 17:46:25    

if(bla[0].equals("ERR" ))
 
ça devrait aller comme test


Message édité par Shogun2002 le 24-11-2003 à 17:46:44
Reply

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] ?


Message édité par WhatDe le 24-11-2003 à 17:49:42
Reply

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)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 24-11-2003 à 17:51:19    

Ok c'est bien ce que je me disais, merci à vous 2 ;)

Reply

Marsh Posté le 24-11-2003 à 17:51:36    

WhatDe a écrit :

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] ?

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.
 
[:grilled]


Message édité par R3g le 24-11-2003 à 17:52:07

---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 24-11-2003 à 17:58:10    

ça devrait pas exister les opérateurs en programmation objet :o

Reply

Marsh Posté le 24-11-2003 à 17:59:10    

Harkonnen a écrit :

ça devrait pas exister les opérateurs en programmation objet :o

Ca depend... = c'est quand même bien pratique;


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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...


Message édité par BifaceMcLeOD le 24-11-2003 à 18:39:07
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed