web-dev-qa-db-ja.com

値を返す三項演算子-Java / Android

PhpからJavaに切り替えました

次の問題が発生しました

書き直したい

if(usrname.equals(username) && (passwd.equals(password))){
    return true;
}
else{
    return false;
}

なので

(usrname.equals(username) && passwd.equals(password) )? return true : return false;

ただし、機能していません(構文エラー)。

int a=1;
int b=2;
int minVal = a < b ? a : b;

取り組んでいます

なんらかの条件に応じて値を返すときに三項演算子が正しく動作しない理由

編集

return  (usrname.equals(username) && passwd.equals(password)); 

booleanを返す場合の解決策になる可能性があります。

私が必要と言うことができます

 (usrname.equals(username) && passwd.equals(password) )? return "member": return "guest";
16
sumit

できるよ

return (usrname.equals(username) && passwd.equals(password) )?  true : false;

trueおよびfalseは、任意の戻り値に置き換えることができます。ブール値のみの場合、三項演算子を完全に回避できます。ただやる

return  (usrname.equals(username) && passwd.equals(password));
37
Aniket Thakur

私が必要と言うことができます

  (usrname.equals(u) && passwd.equals(p)) ? return "member" : return guest";

正しい構文は次のとおりです。

   return (usrname.equals(u) && passwd.equals(p)) ? "member" : "guest";

三項演算子の一般的な形式は

   expression-1 ? expression-2 : expression-3

どこ expression-1のタイプはbooleanで、expression-2およびexpression-3は同じタイプです。

コードでは、式が必要なreturnステートメントを使用していました。 Javaでは、returnステートメントは有効な式ではありません。


とは言っても、yourの例を記述する最良の方法は、条件演算子をまったく使用しません。

   return usrname.equals(username) && passwd.equals(password);
17
Stephen C

なぜ冗長boolean

使うだけ

return  (usrname.equals(username) && passwd.equals(password));

ところで、あなたは単純化することができます:

return(usrname.equals(username)&& passwd.equals(password))? return true:falseを返します。

に:

return usrname.equals(username)&& passwd.equals(password);

三項演算子はphpでJavaと同様に動作します。あなたは愚かな間違いを犯したと思います。「ユーザー名」にスペースまたは別の白い文字があるかもしれません

String a1 = "a";
String b1 = "b";

String a2 = "a";
String b2 = "b";

System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false");

「true」を返します

1
Troncador