[JAVA] condition
Résolu
der_igel
Messages postés
52
Statut
Membre
-
der_igel Messages postés 52 Statut Membre -
der_igel Messages postés 52 Statut Membre -
Bonjour,
J'essaie de réaliser une condition de la forme
Si je fais
ça marche.
Si je fais
(horaires étant une String[] obtenue en splittant une String)
Je ne comprends pas pourquoi j'ai ce message, et je ne vois pas quel assignment est en cause ?
Merci
J'essaie de réaliser une condition de la forme
(condition) ? instruction si vrai : instruction si faux
Si je fais
if ( horaires[0]!= null )
{
this.lun1=horaires[0];
}else
{
this.lun1="";
}
ça marche.
Si je fais
(horaires[0]!= null) ? this.lun1=horaires[0] : this.lun1="";, ça ne marche pas et eclipse me donne comme message d'erreur "The left-hand side of an assignment must be a variable".
(horaires étant une String[] obtenue en splittant une String)
Je ne comprends pas pourquoi j'ai ce message, et je ne vois pas quel assignment est en cause ?
Merci
Configuration: Windows XP Firefox 3.0.1
7 réponses
-
Salut,
Essaie plutôt :this.lun1=(horaires[0]!= null) ? horaires[0] : "";
Cdt -
Merci Fiddy, je n'avais pas dû bien comprendre la syntaxe. Pourtant j'ai cherché des exemples, mais je n'en ai pas trouvé...
Il n'y a plus d'erreurs maintenant, mais il ne fait pas encore ce que je voulais : afficher une chaîne vide à la place de "null". Je cherche... -
Bon, ça ne marche pas, mais ça vient peut-être de tapestry. Il affiche toujours "null" à la place de ""... Je vais chercher une autre solution.
Merci fiddy pour ta réponse, je mets "résolu" car le problème de la condition est bien résolu. -
C'est normal. Tu as fait une erreur classique.
Explication :this.lun1=(horaires[0]!= "null") ? horaires[0] : "";
horaires[0]!="null" va comparer les instances de String. Ils ont des instances différentes. Donc cette instruction est vraie (même si horaires[0]="null"). Du coup this.lun1 va récupérer horaires[0] qui vaut null dans ton cas.
En java, pour comparer deux String, on utilise la méthode equals.
Par exemple :this.lun1=(! horaires[0].equals("null")) ? horaires[0] : "";
Cdt -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
En fait, l'opérateur ternaire marche comme suit :
condition?valeur1:valeur2;
Si la condition est vraie, alors ça renvoie valeur1 sinon valeur2. C'est pour ça qu'il faut mettre de la forme :a=1<3?1:0;
Il n'y a plus d'erreurs maintenant, mais il ne fait pas encore ce que je voulais : afficher une chaîne vide à la place de "null". Je cherche...
Comment ça ? -
Donc si j'ai bien compris, après l'instruction
a=1<3?1:0;
a vaut 1 si 1<3 et 0 sinon.
En fait, ça ne marche pas... J'ai mis, comme tu m'as conseillé,this.lun1=(horaires[0]!= null) ? horaires[0] : "";
Le but est que quand la chaîne horaires[0] est null, this.lun1 prenne la valeur "" et non pas null. Mais si j'affiche this.lun1, j'obtiens toujours null. J'ai fait divers essais :this.lun1=(horaires[0]!= null) ? horaires[0] : ""; this.lun1=(horaires[0]!= null) ? horaires[0] : "1"; this.lun1=(horaires[0]!= "null") ? horaires[0] : ""; // au cas où je n'aurais pas une chaîne null mais une chaîne de valeur "null" this.lun1=(horaires[0]!= "null") ? horaires[0] : "1";
La deuxième ligne m'a permis de voir que this.lun1 ne prenait pas la valeur donnée après ":" -
Merci beaucoup Fiddy, tes explications sont très claires ! Pourtant, ça ne doit pas être la première fois que je compare des String...