Тернарный оператор для возврата 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"