une condition imbriquée à écrire en utilisant le? : Syntaxe. N'est-ce pas un scénario autorisé?
ci-dessous est le code p> que je pensais être égal à p> Mon idée était que 10> 5 seront évaluées, et comme c'est vrai, il vérifierait alors si 2 <5 ou non. Depuis que cela est également vrai, "je" devait être affecté à 230.
Le message d'erreur était p>
5 Réponses :
Vous avez oublié d'ajouter une partie de l'expression. Essayez comme suit:
int i = (10>5) ? ( (2<5) ? 230:456 ) : 0;
L'opérateur ternaire a la syntaxe et il retournera une valeur elle-même, de sorte que vous pouvez les nichez comme p> Votre code donc il manque donc la deuxième valeur pour votre premier opérateur ternaire. p> p> (10> 5)? (2 <5)? 230: 456; code> équivaut à p>
Vous pouvez aller pour des solutions ci-dessous. Mais cela n'est pas recommandé aujourd'hui car la complexité cognitive d'un code source est une question considérable dans l'industrie aujourd'hui. Selon la logique que vous avez partagée, il peut être implémenté de la même manière que ci-dessous.
int i=(10>5) && (2<5)?230:456;
System.out.println("i="+i);
int i = (10>5)?(2<5)?230:456:0;
System.out.println("i="+i);
(10> 5) && (2 <5)? 230: 456 code> est une condition complètement différente
Selon la logique, il n'y a aucune autre partie à 10> 5. Une fois que c'est réussi, il traverse la prochaine condition qui est 2 <5. Seule cette condition s'attend à avoir une partie d'autre. Il semble que cette logique puisse être réécrite dans deux conditions combinées et logique qui fournit la même réponse. Ce serait génial si vous pouvez expliquer la raison de votre commentaire avec une explication @ Andrewtobilko
Mais la combinaison IF de 10> 5 et 2 <5 échoue, nous pouvons aller pour le retour de 456 selon la logique dérivée de l'original qui fournit la même réponse. N'est-ce pas?
Oui, vous pouvez nier l'opérateur ternaire aussi profond possible que possible, cependant, les opérateurs ternaires étant la version condensée de si les conditions, elles peuvent rendre votre code non lisible si vous les condensez plus profondément. p>
N'oubliez pas de saisir le support des conditions pour le rendre lisible, mais ce n'est pas une exigence (0 <1)? P>
Parfois, il peut être plus facile de comprendre si vous réorganisez les conditions. P>
au lieu de p>
vous pouvez faire p>
La seule différence est dans ce dernier cas, la condition initiale renvoie une valeur immédiatement lorsque cela est vrai et requiert nécessite une évaluation ultérieure lorsque FALSE. P> int v = (A> b)? (C> D)? 100: 200: 300; code> p>
int v = (a <= b)? 300: (C> D)? 100: 200; code> p>
Vous avez deux ternaires
? Code> avec un seul séparateur de choix: code>. Vous avez besoin autant de? Code> comme: code>.(10> 5)? (2 <5)? 230: 430: 430: 430: 9999 Code> est valide, si incroyablement difficile à lire, expression.Les deux sont des choses séparées. C'est jusqu'à votre exigence.!
IMHO, la lisibilité est préférée sur le nombre de lignes de code. De plus, pourquoi JavaScript est-il étiqueté JavaScript dans cette question ??
@KrishnaNaprashatt, j'ai marqué JavaScript parce que nous avons également une utilisation de l'opérateur ternaire dans JS. J'étais sur le point de modifier mon code.
J'ai supprimé la balise JavaScript, veuillez vous concentrer uniquement sur une seule langue lorsque vous posez des questions.
@Aishwarya, oui nous avons, mais la question postée ne poste pas
Je résoudrais cela avec simplement
si ... autre si ... sinon code>.