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