Was ist das für ein Java Konstrukt (e.getDistance() < 200 ? 0 : 8)

eRiF

Mitglied
Hi,

ich wollte mal fragen was dies für ein Java Konstrukt ist

setMaxVelocity(Math.abs(getTurnRemainingRadians()) > 1 && e.getDistance() < 200 ? 0 : 8);

dieses ist mir nicht klar was es tut.

mfg
 
Hi,

das ist der Bedingungsoperator, mehr oder weniger eine einfache if Anweisung.
Wenn Bedinung ? true : false

in deinem Fall würde die if Anweisung so aussehn
Java:
if(Math.abs(getTurnRemainingRadians()) > 1 && e.getDistance() < 200 ) {
     setMaxVelocity(0);
} else {
     setMaxVelocity(8);
}
 
Der Unterschied ist, dass der ternäre Operator (unter dem Namen kenne ich ihn) einen Wert zurückliefert - und zurückliefern muss (!). Im Gegensatz zu if-else dürfen in den beiden Verzweigungen auch keine Code-Blöcke, sondern nur einzelne Anweisungen stehen:

Java:
boolean test = true;

int i = test ? 42 : 57; //OK

test ? System.out.println("42") : System.out.println("57"); //geht nicht, kein Wert

System.out.println(test ? "42" : "57"); //OK

Mehr dazu auf der Insel
 
Zuletzt bearbeitet:

Zurück
Oben