问题
Just switched to Java from php
I encountered following issue
I want to rewrite
if(usrname.equals(username) && (passwd.equals(password))){
return true;
}
else{
return false;
}
as
(usrname.equals(username) && passwd.equals(password) )? return true : return false;
it is not working(syntax error) however,
int a=1;
int b=2;
int minVal = a < b ? a : b;
is working
Why ternary operator are not behaving correctly while returning value depending on some condition
EDIT
return (usrname.equals(username) && passwd.equals(password));
could be solution if it return boolean .
lets say i need
(usrname.equals(username) && passwd.equals(password) )? return "member": return "guest";
回答1:
You can do
return (usrname.equals(username) && passwd.equals(password) )? true : false;
true
and false
can be replaced by any return value you want. If it is just boolean then you can avoid ternary operator altogether. Just do
return (usrname.equals(username) && passwd.equals(password));
回答2:
lets say I need
(usrname.equals(u) && passwd.equals(p)) ? return "member" : return guest";
The correct syntax is:
return (usrname.equals(u) && passwd.equals(p)) ? "member" : "guest";
The general form of the ternary operator is
expression-1 ? expression-2 : expression-3
where expression-1
has type boolean
, and expression-2
and expression-3
have the same type.
In your code, you were using return
statements where expressions are required. In Java, a return
statement is NOT a valid expression.
Having said that, the best way to write your example doesn't uses the conditional operator at all:
return usrname.equals(username) && passwd.equals(password);
回答3:
Why redundant boolean
Just use
return (usrname.equals(username) && passwd.equals(password));
回答4:
By the way you can simplify:
return (usrname.equals(username) && passwd.equals(password) )? return true : return false;
To:
return usrname.equals(username) && passwd.equals(password);
The ternary operator work similar in php than Java, I think you have made a silly mistake, maybe "username" have a space or another white character
String a1 = "a";
String b1 = "b";
String a2 = "a";
String b2 = "b";
System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false");
it return "true"
来源:https://stackoverflow.com/questions/25072706/ternary-operator-to-return-value-java-android