Тернарный оператор возвращает значение – 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"; 

Solutions Collecting From Web of "Тернарный оператор возвращает значение – Java / Android"

Ты можешь сделать

 return (usrname.equals(username) && passwd.equals(password) )? true : false; 

true и false могут быть заменены любым возвращаемым значением, которое вы хотите. Если это просто логическое значение, вы можете избежать тройного оператора в целом. Просто делать

 return (usrname.equals(username) && passwd.equals(password)); 

Скажу, что мне нужно

  (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); 

Почему избыточный boolean

Просто используйте

 return (usrname.equals(username) && passwd.equals(password)); 

Кстати, вы можете упростить:

Return (usrname.equals (username) && passwd.equals (password))? 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"