三元运算符返回值 - Java/Android

sum*_*mit 17 java android function operators ternary-operator

刚刚从php切换到Java

我遇到了以下问题

我想改写

if(usrname.equals(username) && (passwd.equals(password))){
    return true;
}
else{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

(usrname.equals(username) && passwd.equals(password) )? return true : return false;
Run Code Online (Sandbox Code Playgroud)

它不起作用(语法错误)但是,

int a=1;
int b=2;
int minVal = a < b ? a : b;
Run Code Online (Sandbox Code Playgroud)

工作中

为什么三元运算符在返回值时表现不正常,具体取决于某些条件

编辑

return  (usrname.equals(username) && passwd.equals(password)); 
Run Code Online (Sandbox Code Playgroud)

如果它返回布尔值可能是解决方案.

我想说我需要

 (usrname.equals(username) && passwd.equals(password) )? return "member": return "guest";
Run Code Online (Sandbox Code Playgroud)

Ani*_*kur 38

你可以做

return (usrname.equals(username) && passwd.equals(password) )?  true : false;
Run Code Online (Sandbox Code Playgroud)

true并且false可以替换为您想要的任何返回值.如果它只是布尔值,那么你可以完全避免使用三元运算符.做就是了

return  (usrname.equals(username) && passwd.equals(password));
Run Code Online (Sandbox Code Playgroud)


Ste*_*n C 18

我想说我需要

  (usrname.equals(u) && passwd.equals(p)) ? return "member" : return guest";
Run Code Online (Sandbox Code Playgroud)

正确的语法是:

   return (usrname.equals(u) && passwd.equals(p)) ? "member" : "guest";
Run Code Online (Sandbox Code Playgroud)

三元运算符的一般形式是

   expression-1 ? expression-2 : expression-3
Run Code Online (Sandbox Code Playgroud)

其中expression-1已键入boolean,并expression-2expression-3具有相同的类型.

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


说了这么多,写的最好方法例子并不用条件运算都:

   return usrname.equals(username) && passwd.equals(password);
Run Code Online (Sandbox Code Playgroud)


Ruc*_*era 5

为什么多余boolean

只需使用

return  (usrname.equals(username) && passwd.equals(password));
Run Code Online (Sandbox Code Playgroud)