刚刚从php切换到Java
我遇到了以下问题
我想重写
if(usrname.equals(username) && (passwd.equals(password))){
return true;
}
else{
return false;
}
as
(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";
答案 0 :(得分:35)
你可以做到
return (usrname.equals(username) && passwd.equals(password) )? true : false;
true
和false
可以替换为您想要的任何返回值。如果它只是布尔值,那么你可以完全避免使用三元运算符。只是做
return (usrname.equals(username) && passwd.equals(password));
答案 1 :(得分:17)
我想说我需要
(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
语句不是有效的表达式。
话虽如此,编写你的示例的最佳方法并没有使用条件运算符:
return usrname.equals(username) && passwd.equals(password);
答案 2 :(得分:3)
为何多余boolean
只需使用
return (usrname.equals(username) && passwd.equals(password));
答案 3 :(得分:1)
顺便说一下,你可以简化:
返回(usrname.equals(用户名)&amp;&amp; passwd.equals(密码))? return true:return false;
要:
返回usrname.equals(用户名)&amp;&amp; passwd.equals(密码);
三元运算符的工作方式类似于PHP而不是Java,我认为你犯了一个愚蠢的错误,也许&#34;用户名&#34;有一个空格或另一个白色字符
String a1 = "a";
String b1 = "b";
String a2 = "a";
String b2 = "b";
System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false");
它返回&#34; true&#34;
答案 4 :(得分:0)
Java三元运算符是一个表达式,因此被评估为单个值。 根据{{3}},对于以下给定表达式
result = someCondition ? value1 : value2;
如果布尔条件为true,则将 value1 的值分配给结果,否则将 value2 分配给结果。值1和值2的值类型应相同。
因此return语句的正确语法为
return boolean_condition ? value_when_true : value_when_false