[JAVA] condition

Résolu/Fermé
der_igel Messages postés 50 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 9 octobre 2009 - 13 août 2008 à 11:22
der_igel Messages postés 50 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 9 octobre 2009 - 13 août 2008 à 14:09
Bonjour,

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
A voir également:

7 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 août 2008 à 11:25
Salut,
Essaie plutôt :
this.lun1=(horaires[0]!= null) ? horaires[0] : "";

Cdt
0
der_igel Messages postés 50 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 9 octobre 2009
13 août 2008 à 11:35
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...
0
der_igel Messages postés 50 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 9 octobre 2009
13 août 2008 à 11:54
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.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 août 2008 à 13:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 août 2008 à 11:56
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 ?
-1
der_igel Messages postés 50 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 9 octobre 2009
13 août 2008 à 12:21
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 ":"
-1
der_igel Messages postés 50 Date d'inscription mercredi 13 août 2008 Statut Membre Dernière intervention 9 octobre 2009
13 août 2008 à 14:09
Merci beaucoup Fiddy, tes explications sont très claires ! Pourtant, ça ne doit pas être la première fois que je compare des String...
-1