Opérateur ternaire à la valeur de retour - Java/Android
Tout juste de passer à Java à partir de php
J'ai rencontré de 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;
il ne fonctionne pas(erreur de syntaxe)
cependant,
int a=1;
int b=2;
int minVal = a < b ? a : b;
travaille
Pourquoi opérateur ternaire ne se comportent pas correctement, tandis que le retour de la valeur en fonction des conditions
MODIFIER
return (usrname.equals(username) && passwd.equals(password));
pourrait être une solution si elle return boolean .
permet de dire que j'ai besoin de
(usrname.equals(username) && passwd.equals(password) )? return "member": return "guest";
return usrname.equals(username) && (passwd.equals(password)
?Essayez ceci : String b = (usrname.est égal à(nom d'utilisateur) && passwd.equals(mot de passe) )? "membre": "invité";
OriginalL'auteur sumit | 2014-08-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire
true
etfalse
peut être remplacé par une valeur de retour que vous souhaitez. Si c'est juste booléen alors vous pouvez éviter opérateur ternaire tout à fait. Il suffit de nemême moi, je suis confus .. votre méthode de travail pour moi
OriginalL'auteur
La syntaxe correcte est:
La forme générale de l'opérateur ternaire est
où
expression-1
a typeboolean
, etexpression-2
etexpression-3
ont le même type.Dans votre code, vous avez été en utilisant
return
états où les expressions sont nécessaires. En Java, unereturn
déclaration n'est PAS une expression valide.Cela dit, la meilleure façon de les écrire votre exemple n'utilise l'opérateur conditionnel à tous:
OriginalL'auteur
Pourquoi redondant
boolean
Suffit d'utiliser
parce que vous aviez la syntaxe de mal. Devrait être
return (...) : true ? false;
. Le 3 opérandes doivent être des expressions, etreturn ...
n'est jamais une expression.c'est
(...) ? true : false
OriginalL'auteur
Par la façon dont vous pouvez simplifier:
retour (usrname.est égal à(nom d'utilisateur) && passwd.equals(mot de passe) )? return true : return false;
:
retour usrname.est égal à(nom d'utilisateur) && passwd.equals(mot de passe);
L'opérateur ternaire travail similaire en php que Java, je pense que vous avez fait une stupide erreur, peut-être "nom d'utilisateur" avoir un espace ou autre caractère blanc
il renvoie "true"
😮 j'ai compris, vous ne pouvez pas mettre le retour à l'intérieur de l'opérateur ternaire. Je n'ai pas voir que dans votre code la première fois
OriginalL'auteur