[JAVA] condition

Résolu
der_igel Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
der_igel Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
Salut,
Essaie plutôt :
this.lun1=(horaires[0]!= null) ? horaires[0] : "";

Cdt
0
der_igel Messages postés 50 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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