Ternary operator to return value- Java/Android

有些话、适合烂在心里 提交于 2020-01-22 13:22:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!