三元内的三元

时间:2015-12-26 10:02:10

标签: java ternary

因此,对于for循环ect来说非常普遍,但是当我们有一个三元例子时,例如

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

我们怎样才能再放三个?像一个增强的三元

问题:

给定两个int值,返回较大的值。但是,如果两个值除以5时具有相同的余数,则返回较小的值。但是,在所有情况下,如果两个值相同,则返回0.注意:%&#34; mod&#34;运算符计算余数,例如7%5是2。

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

我的想法:

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

如果&lt; b,检查模数5是否等于

2 个答案:

答案 0 :(得分:2)

您有4种可能的结果:

  1. a&lt; b并且两者具有相同的余数 - &gt;返回
  2. a&lt; b他们没有相同的余数 - &gt;返回b
  3. a&gt; b并且两者具有相同的余数 - &gt;返回b
  4. a&gt; b他们没有相同的余数 - &gt;返回
  5. a == b时返回哪一个并不重要。

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

    编辑:

    当两个数字相同时,我错过了返回0的要求。这需要一点点补充:

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

答案 1 :(得分:0)

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