wake-up-neo.com

Ternärer Operator zur Rückgabe von Werten - Java/Android

Ich habe gerade von PHP auf Java umgestellt

Ich bin auf folgendes Problem gestoßen

Ich möchte umschreiben

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

wie 

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

es funktioniert nicht (Syntaxfehler) jedoch

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

funktioniert

Warum sich der ternäre Operator nicht korrekt verhält, während er einen Wert zurückgibt, abhängig von bestimmten Bedingungen

BEARBEITEN

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

könnte Lösung sein, wenn es boolean zurückgibt.

sagen wir, ich brauche

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

Du kannst tun

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

true und false können durch einen beliebigen Rückgabewert ersetzt werden. Wenn es nur boolesch ist, können Sie einen ternären Operator ganz vermeiden. Mach einfach

return  (usrname.equals(username) && passwd.equals(password));
31
Aniket Thakur

sagen wir, ich brauche

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

Die korrekte Syntax lautet:

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

Die allgemeine Form des ternären Operators lautet

   expression-1 ? expression-2 : expression-3

wobei expression-1 den Typ boolean hat und expression-2 und expression-3 den gleichen Typ haben.

In Ihrem Code haben Sie return-Anweisungen verwendet, bei denen Ausdrücke erforderlich sind. In Java ist eine return-Anweisung NICHT ein gültiger Ausdruck.


Der beste Weg, um your example zu schreiben, verwendet den Bedingungsoperator jedoch überhaupt nicht:

   return usrname.equals(username) && passwd.equals(password);
15
Stephen C

Warum redundant boolean 

Benutz einfach

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

Übrigens können Sie vereinfachen:

return (usrname.equals (Benutzername) && passwd.equals (Passwort))? true zurückgeben: false zurückgeben;

Zu:

rückgabe usrname.equals (Benutzername) && passwd.equals (Passwort); 

Der ternäre Operator arbeitet in PHP ähnlich wie Java, ich denke, Sie haben einen dummen Fehler gemacht, vielleicht haben "Benutzername" ein Leerzeichen oder ein anderes weißes Zeichen

String a1 = "a";
String b1 = "b";

String a2 = "a";
String b2 = "b";

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

es gibt "wahr" zurück

1
Troncador