web-dev-qa-db-fra.com

Qu'est-ce que "?" dire en Java?

Je ne sais pas ce que le point d'interrogation (?) représente en Java, je faisais un petit programme, un jeu Nim. cherchais de l'aide dans un livre et a vu cette déclaration:

int pinsToTake = (min >= 2) ? 2 : 1;

Je ne le comprends pas, que va représenter ?? Peut-il y avoir quelque chose à voir avec if-statement mais vous le mettez dans une variable? et le : peut être quelque chose "autrement"? (Ces choses que je viens de dire peuvent être très trompeuses)

9
Alexein

someval = (min> = 2)? 2: 1;

C'est ce qu'on appelle l'opérateur ternaire, qui peut être utilisé comme if-else. c'est équivalent à

if((min >= 2) {
   someval =2;
} else {
   someval =1
}

Suivez ce tutorial pour plus d’informations et d’utilisation.

24
Nandkumar Tekale

Son ternary operator également appelé opérateur conditionnel , regarde référence

comme Object bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);

par exemple. operand1 ? operand2 : operand3

  • si opérande1 est vraie, opérande2 est renvoyé, sinon opérand3 est renvoyé
  • opérande1 doit être un type booléen
  • opérande1 peut être une expression qui correspond à un type booléen
  • operand1 et operand2 doivent être des types numériques pouvant être promus ou des références d'objet pouvant être castés, ou null
  • si l'un des opérandes2 ou opérandes3 est un octet et l'autre un court, le type de la valeur renvoyée sera un court
  • si l'un de l'opérande2 ou de l'opérande3 est un octet, un court-caractère ou un caractère et que l'autre est une valeur int constante qui s'inscrit dans la plage des autres opérandes, le type de la valeur renvoyée sera le type de l'autre opérande
  • sinon, une promotion numérique binaire normale s'applique
  • si l'un des opérandes2 ou opérande3 est nul, le type du retour sera le type de l'autre opérande
  • si l'opérande2 et l'opérande3 sont des types différents, l'un d'eux doit être compatible (convertible) avec l'autre type référence
7
Harmeet Singh

ça veut dire:

if(min >= 2) 
   someval =2;
else 
   someval =1

Son appelé un opérateur ternary Voir cette Java exemple aussi

4
CloudyMarble

C'est un opérateur ternaire. Consultez la documentation d'Oracle pour plus d'informations. En résumé, il s'agit d'une instruction if-else qui peut être effectuée sur une seule ligne et utilisée à l'intérieur de méthodes et pour définir des valeurs de variables.

Syntaxe:

boolean_expression ? do_if_true : do_if_false;

Parallélisme avec la déclaration if-else:

if(boolean_expression)
    //do_if_true;
else 
    //do_if_false;

Je n'ai pas utilisé de crochets à dessein, car vous ne pouvez exécuter qu'une seule ligne de code dans do_if_true et do_if_false.

Exemple d'utilisation:

boolean hello = true;
String greetings = hello ? "Hello World!" : "No hello for you...";

Ceci va définir someString comme "Hello World!" puisque la variable booléenne hello est évaluée à true. D'autre part, vous pouvez imbriquer ces expressions:

boolean hello = true;
boolean world = false;

String greetings = hello ? (world ? "Hello World!" : "Hello Stranger!") : "No hello for you...";

Dans ce cas, les salutations auront pour valeur "Hello Stranger!";

4
Fritz

Il s’appelle l’opérateur Ternary If , c’est juste pour un if...else

1
codebox

"?:" est un opérateur ternaire équivalent à une instruction if else.

Dans votre exemple:

   pinsToTake = (min >= 2) ? 2 : 1 

si min> = 2, assigner 2 à pinsToTake, sinon assigner 1

0
Razvan
max = (a > b) ? a : b;

(a> b)? un B; est une expression qui renvoie l'une des deux valeurs, a ou b.
La condition (a> b) est testée. Si c'est le cas, la première valeur, a, est renvoyée. S'il est faux, la deuxième valeur, b, est renvoyée.
Quelle que soit la valeur renvoyée dépend du test conditionnel, a> b. La condition peut être toute expression qui renvoie une valeur booléenne.

0
Chris Shanks

Il s’appelle opérateur conditionnel. Voici comment cela fonctionne. si min est supérieur ou égal à 2, première valeur après? c'est-à-dire 2 sera assigné à la variable correspondante, sinon la deuxième valeur 1 sera assignée.

0
Amrit Pal

Ce lien vous dira tout ce dont vous avez besoin.

Résumé pour les archives:

C'est ce qu'on appelle l'opérateur conditionnel. C'est un opérateur ternaire qui prend trois termes:

Expression booléenne ? Expr1: Expr2

La BooleanExpression est évaluée. Si c'est vrai, la valeur de l'expression entière est Expr1. Si c'est faux, la valeur de l'expression entière est Expr2.

Donc, cela sert le même genre d'objet qu'une déclaration if, mais c'est un terme plutôt qu'une déclaration entière. Cela signifie que vous pouvez l'intégrer à des endroits où vous ne pouvez pas utiliser une déclaration complète.

0
Michael A