Тернарный оператор для возврата value- Java/Android
Просто переключился на Java с php
Я столкнулся с следующей проблемой
Я хочу переписать
if(usrname.equals(username) && (passwd.equals(password))){
return true;
}
else{
return false;
}
в виде
(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";
Ответы
Ответ 1
Ты можешь сделать
return (usrname.equals(username) && passwd.equals(password) )? true : false;
true
и false
могут быть заменены любым возвращаемым значением, которое вы хотите. Если это просто логическое значение, вы можете вообще избежать тройного оператора. Просто делать
return (usrname.equals(username) && passwd.equals(password));
Ответ 2
скажем, мне нужно
(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);
Ответ 3
Почему избыточные boolean
Просто используйте
return (usrname.equals(username) && passwd.equals(password));
Ответ 4
Кстати, вы можете упростить:
return (usrname.equals (имя пользователя) && passwd.equals (пароль))? return true: return false;
Для того, чтобы:
return usrname.equals (имя пользователя) && passwd.equals (пароль);
Тернарный оператор работает аналогично PHP, чем Java, я думаю, вы сделали глупую ошибку, возможно, "имя пользователя" имеет пробел или другой белый символ
String a1 = "a";
String b1 = "b";
String a2 = "a";
String b2 = "b";
System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false");
он возвращает "true"