Deux questions sur l'utilisation d'un point d'interrogation "?" et deux-points ":" opérateur entre les parenthèses d'une fonction d'impression: que font-ils? Aussi, est-ce que quelqu'un connaît le terme standard pour eux ou où je peux trouver plus d'informations sur leur utilisation? J'ai lu qu'elles ressemblent à une déclaration 'if' 'else'.
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();
}
Il s'agit de l'opérateur conditionnel ternary , qui peut être utilisé n'importe où, pas seulement l'instruction print. On l'appelle parfois simplement "l'opérateur ternaire", mais ce n'est pas le seul opérateur ternaire , mais le plus courant.
Voici un bon exemple de Wikipedia montrant comment cela fonctionne:
Une construction traditionnelle if-else en C, Java et JavaScript est écrite:
if (a > b) { result = x; } else { result = y; }
Cela peut être réécrit comme la déclaration suivante:
result = a > b ? x : y;
Fondamentalement, il prend la forme:
boolean statement ? true result : false result;
Donc, si la déclaration booléenne est vraie, vous obtenez la première partie et si elle est fausse, la seconde.
Essayez-les si cela n'a toujours pas de sens:
System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
C'est une déclaration if/else équivalente à
if(row % 2 == 1){
System.out.print("<");
}else{
System.out.print("\r>");
}
a=1;
b=2;
x=3;
y=4;
answer = a > b ? x : y;
answer=4
puisque la condition est fausse, elle prend la valeur y.
Un point d'interrogation (?)
. La valeur à utiliser si la condition est vraie
Deux points (:)
. La valeur à utiliser si la condition est fausse
Peut-être que cela peut être un exemple parfait pour Android, Par exemple:
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);
}
Aussi juste si je posterais la réponse à une autre question connexe que j'avais,
a = x ? : y;
Est équivalent à:
a = x ? x : y;
Si x est false ou null, la valeur de y est prise.
c'est un opérateur ternaire et dans un anglais simple, il est écrit "if row%2 is equal to 1 then return < else return /r"
Ils s'appellent l'opérateur ternaire car ils sont les seuls en Java.
La différence avec la construction if ... else est qu'ils renvoient quelque chose, et que ce quelque chose peut être n'importe quoi:
int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();