Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回值的三元运算符-Java/Android_Java_Android_Function_Operators_Ternary Operator - Fatal编程技术网

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

返回值的三元运算符-Java/Android,java,android,function,operators,ternary-operator,Java,Android,Function,Operators,Ternary Operator,刚从php切换到Java 我遇到了以下问题 我想重写 if(usrname.equals(username) && (passwd.equals(password))){ return true; } else{ return false; } 作为 它不工作(语法错误) 但是, 如果返回布尔值,则可能是解决方案 假设我需要 (usrname.equals(username) && passwd.equals(password) )? retu

刚从php切换到Java

我遇到了以下问题

我想重写

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

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

如果返回布尔值,则可能是解决方案

假设我需要

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

为什么冗余
boolean

只用

return  (usrname.equals(username) && passwd.equals(password));
你能行

return (usrname.equals(username) && passwd.equals(password) )?  true : false;
true
false
可以由您想要的任何返回值替换。如果它只是布尔型的,那么可以完全避免使用三元运算符。照办

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

顺便说一下,您可以简化:

返回(usrname.equals(用户名)和&passwd.equals(密码))?返回真:返回假

致:

返回usrname.equals(用户名)和&passwd.equals(密码)

三元运算符在php中的工作方式与Java类似,我认为您犯了一个愚蠢的错误,可能“username”有空格或其他白色字符

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

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

System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false");
它返回“真”

假设我需要

  (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
具有相同的类型1

在代码中,在需要表达式的地方使用了
return
语句。在Java中,
return
语句不是有效的表达式

1-这不考虑可能需要的转换。有关完整故事,请参阅JLS


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

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

Java三元运算符是一个表达式,因此计算为单个值。 根据,对于以下给定表达式

result = someCondition ? value1 : value2;
如果布尔条件为true,则将值1指定给结果,否则将值2指定给结果。value1和value2应为相同的值类型

因此,返回语句的正确语法是

return boolean_condition ? value_when_true : value_when_false

返回usrname.equals(用户名)和&passwd.equals(密码)
?尝试以下操作:字符串b=(usrname.equals(用户名)和&passwd.equals(密码))?“成员”:“来宾”;另外两个人已经说过了。关于你的更新,不,这不是问题。问题是OP的语法错误。:o我发现,你不能将返回值放在三元运算符中。我第一次在你的代码中没有看到这一点
   return usrname.equals(username) && passwd.equals(password);
result = someCondition ? value1 : value2;
return boolean_condition ? value_when_true : value_when_false