返回值的三元运算符 - 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)); 

如果它返回布尔值,则可以解决。

让我们说我需要

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

答案 1

你可以做

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

true并且可以替换为所需的任何返回值。如果它只是布尔值,那么你可以完全避免三元运算符。就这么做false

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

答案 2

让我们说我需要

  (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

其中 具有 类型 ,并且具有相同的类型1expression-1booleanexpression-2expression-3

在代码中,您使用的是需要表达式的语句。在 Java 中,语句不是有效的表达式。returnreturn

1 - 这没有考虑可以进行的转换。有关完整故事,请参阅 JLS。


话虽如此,编写示例的最佳方式根本不使用条件运算符:

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