/ / Ternaire dans un ternaire - java, ternaire

Ternaire dans un ternaire - Java, ternaire

Donc, il est très courant d'avoir des boucles ect, mais quand on a un exemple ternaire tel que

int answer = (a < b) ? b : a;

Comment pouvons-nous mettre un autre ternaire après le? comme un ternaire amélioré

question:

Compte tenu de deux valeurs int, renvoyez la valeurplus grand. Cependant, si les deux valeurs ont le même reste quand elles sont divisées par 5, alors la plus petite valeur est renvoyée. Cependant, dans tous les cas, si les deux valeurs sont identiques, retournez 0. Remarque: l'opérateur% "mod" calcule le reste, par ex. 7% 5 est 2.

maxMod5(2, 3) → 3
maxMod5(6, 2) → 6
maxMod5(3, 2) → 3

mon idée:

public int maxMod5(int a, int b) {
int answer = ((a < b) ? (a % 5 == b % 5) ? a : b) : a;
}

Si a <b, vérifiez si le module 5 est égal à ect

Réponses:

2 pour la réponse № 1

Vous avez 4 résultats possibles:

  1. a <b et les deux ont le même reste -> renvoyer un
  2. a <b et ils n'ont pas le même reste -> retour b
  3. a> b et les deux ont le même reste -> retour b
  4. a> b et ils n'ont pas le même reste -> retourne un

Peu importe lequel vous retournez quand a == b.

int answer = (a < b) ? ((a % 5 == b % 5) ? a : b) : ((a % 5 == b % 5) ? b : a);

Modifier:

J'ai manqué l'exigence de retourner 0 lorsque les deux nombres sont les mêmes. Cela nécessite un petit ajout:

int answer = a==b ? 0 : (a < b) ? ((a % 5 == b % 5) ? a : b) : ((a % 5 == b % 5) ? b : a);

0 pour la réponse № 2
int ans = (a == b) ? 0 : ((a % 5 == b % 5) ? ((a<b)?a:b) : ((a>b)?a:b));