wake-up-neo.com

Was ist ein Fragezeichen "?" und Doppelpunkt ":" Operator verwendet für?

Zwei Fragen zur Verwendung eines Fragezeichens "?" und Doppelpunkt ":" - Operator innerhalb der Klammern einer Druckfunktion: Was machen sie? Kennt jemand auch den Standardbegriff für sie oder wo finde ich weitere Informationen zu ihrer Verwendung? Ich habe gelesen, dass sie einer "wenn" anderen Aussage ähneln.

int row = 10;
int column;
while (row >= 1)
{
    column = 1;
    while(column <= 10)
    {
        System.out.print(row % 2 == 1 ? "<" : "\r>");
        ++column;
    }
    --row;
    System.out.println();
}
112
Deepend

Dies ist der ternäre bedingte Operator , der überall verwendet werden kann, nicht nur in der print-Anweisung. Es wird manchmal nur "der ternäre Operator" genannt, aber es ist nicht der einzige ternäre Operator , nur der häufigste.

Hier ein gutes Beispiel aus Wikipedia, das zeigt, wie es funktioniert:

Ein traditionelles if-else-Konstrukt in C, Java und JavaScript wird geschrieben:

if (a > b) {
    result = x;
} else {
    result = y;
}

Dies kann als folgende Anweisung umgeschrieben werden:

result = a > b ? x : y;

Grundsätzlich hat es die Form:

boolean statement ? true result : false result;

Wenn also die boolesche Aussage wahr ist, erhalten Sie den ersten Teil, und wenn sie falsch ist, erhalten Sie den zweiten Teil.

Probieren Sie diese aus, wenn das immer noch keinen Sinn ergibt:

System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
262
Brendan Long

Das ist eine if/else-Anweisung

if(row % 2 == 1){
  System.out.print("<");
}else{
  System.out.print("\r>");
}
8
fmucar
a=1;
b=2;

x=3;
y=4;

answer = a > b ? x : y;

answer=4 Da die Bedingung falsch ist, ist der Wert y erforderlich.

Ein Fragezeichen (?)
. Der zu verwendende Wert, wenn die Bedingung erfüllt ist

Ein Doppelpunkt (:)
. Der zu verwendende Wert, wenn die Bedingung falsch ist

3
rbe

Vielleicht kann es ein perfektes Beispiel für Android sein, Zum Beispiel:

void setWaitScreen(boolean set) {
    findViewById(R.id.screen_main).setVisibility(
            set ? View.GONE : View.VISIBLE);
    findViewById(R.id.screen_wait).setVisibility(
            set ? View.VISIBLE : View.GONE);
}
2
mehmet

Ich würde auch die Antwort auf eine andere verwandte Frage posten, die ich hatte.

a = x ? : y;

Ist äquivalent zu:

a = x ? x : y;

Wenn x falsch oder null ist, wird der Wert von y verwendet.

1
moo moo

es ist ein ternärer Operator und in einfachem Englisch heißt es "if row%2 is equal to 1 then return < else return /r"

1
Anurag Ramdasan

Sie heißen der ternäre Operator , da sie die einzigen in Java sind. 

Der Unterschied zum if ... else-Konstrukt besteht darin, dass sie etwas zurückgeben, und dieses Etwas kann alles sein: 

  int k = a > b ? 7 : 8; 
  String s = (foobar.isEmpty ()) ? "empty" : foobar.toString (); 
0
user unknown