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 № 1Vous avez 4 résultats possibles:
- a <b et les deux ont le même reste -> renvoyer un
- a <b et ils n'ont pas le même reste -> retour b
- a> b et les deux ont le même reste -> retour b
- 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));