Operador ternario devuelve valor – Java / Android

Sólo cambió a Java desde php

Encontré el problema siguiente

Quiero reescribir

if(usrname.equals(username) && (passwd.equals(password))){ return true; } else{ return false; } 

como

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

No está funcionando (error de sintaxis) sin embargo,

 int a=1; int b=2; int minVal = a < b ? a : b; 

está trabajando

Por qué el operador ternario no se está comportando correctamente al devolver el valor dependiendo de alguna condición

EDITAR

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

Podría ser la solución si devuelve boolean.

Digamos que necesito

  (usrname.equals(username) && passwd.equals(password) )? return "member": return "guest"; 

Tu puedes hacer

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

true y false se pueden reemplazar por cualquier valor de retorno que desee. Si es sólo boolean entonces usted puede evitar el operador ternario por completo. Solo haz

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

Digamos que necesito

  (usrname.equals(u) && passwd.equals(p)) ? return "member" : return guest"; 

La sintaxis correcta es:

  return (usrname.equals(u) && passwd.equals(p)) ? "member" : "guest"; 

La forma general del operador ternario es

  expression-1 ? expression-2 : expression-3 

Donde expression-1 tiene tipo boolean y expression-2 y expression-3 tienen el mismo tipo.

En su código, estaba utilizando declaraciones de return donde se requieren expresiones. En Java, una sentencia return no es una expresión válida.


Dicho esto, la mejor manera de escribir su ejemplo no utiliza el operador condicional en absoluto:

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

¿Por qué boolean redundante?

Solo usa

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

Por la forma en que puede simplificar:

Return (usrname.equals (nombre de usuario) && passwd.equals (contraseña))? Return true: return false;

A:

Return usrname.equals (nombre de usuario) && passwd.equals (contraseña);

El operador ternario de trabajo similar en php de Java, creo que ha cometido un error tonto, tal vez "nombre de usuario" tienen un espacio u otro carácter blanco

 String a1 = "a"; String b1 = "b"; String a2 = "a"; String b2 = "b"; System.out.println((a1.equals(a2)&&b1.equals(b2))?"true":"false"); 

Devuelve "true"

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.