Vient de passer de PHP à Java
J'ai rencontré le problème suivant
Je veux réécrire
if(usrname.equals(username) && (passwd.equals(password))){
return true;
}
else{
return false;
}
comme
(usrname.equals(username) && passwd.equals(password) )? return true : return false;
cela ne fonctionne pas (erreur de syntaxe) cependant,
int a=1;
int b=2;
int minVal = a < b ? a : b;
travaille
Pourquoi les opérateurs ternaires ne se comportent pas correctement lorsqu'ils renvoient une valeur en fonction de certaines conditions
MODIFIER
return (usrname.equals(username) && passwd.equals(password));
pourrait être solution si elle retourne booléen.
disons que j'ai besoin
(usrname.equals(username) && passwd.equals(password) )? return "member": return "guest";
Tu peux faire
return (usrname.equals(username) && passwd.equals(password) )? true : false;
true
et false
peuvent être remplacés par la valeur de retour souhaitée. Si c'est juste booléen, alors vous pouvez éviter complètement l'opérateur ternaire. Il suffit de faire
return (usrname.equals(username) && passwd.equals(password));
disons que j'ai besoin
(usrname.equals(u) && passwd.equals(p)) ? return "member" : return guest";
La syntaxe correcte est la suivante:
return (usrname.equals(u) && passwd.equals(p)) ? "member" : "guest";
La forme générale de l’opérateur ternaire est
expression-1 ? expression-2 : expression-3
où expression-1
a le type boolean
, et expression-2
et expression-3
ont le même type.
Dans votre code, vous utilisiez des instructions return
où des expressions sont requises. En Java, une instruction return
n'est PAS une expression valide.
Cela dit, le meilleur moyen d'écrire votre exemple n'utilise pas du tout l'opérateur conditionnel:
return usrname.equals(username) && passwd.equals(password);
Pourquoi redondant boolean
Juste utiliser
return (usrname.equals(username) && passwd.equals(password));
En passant, vous pouvez simplifier:
return (usrname.equals (nom d'utilisateur) && passwd.equals (mot de passe))? return true: retourne faux;
À:
return usrname.equals (nom d'utilisateur) && passwd.equals (mot de passe);
L'opérateur ternaire fonctionne de manière similaire en php à Java, je pense que vous avez commis une erreur stupide, peut-être que "nom d'utilisateur" a un espace ou un autre caractère blanc
String a1 = "a";
String b1 = "b";
String a2 = "a";
String b2 = "b";
System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false");
il retourne "vrai"