比较范围

时间:2015-12-24 18:51:23

标签: java int max min

我很难理解为什么我的代码无法解决这个问题我试图解决这个问题。

问题: 给定2个正的int值,返回10..20(含)范围内的较大值,如果两个值都不在该范围内,则返回0。

我的代码:

public int max1020(int a, int b) {
  int max;

  if((a<10 || a>20) && (b<10 || b>20)) {
  max = 0;
  }

  if(Math.max(a,b) >= 10 && Math.max(a,b) <= 20) {
  max = Math.max(a,b);
  } else {
  max = Math.min(a,b);
  }

  return max;
}

除了a = 9和b = 21之外,每个数字都有效,我只是不明白。我哪里出错了?

4 个答案:

答案 0 :(得分:0)

编辑原始答案,因为我监督了一些案件。
以下内容适用于您喜欢的内容

static int max1020(int a, int b) {
    int max = 0;
    if ((a < 10 || a > 20) && (b < 10 || b > 20)) {
        //If neither fall between 10 and 20, return immediately.
        return max;
    }
    if (Math.max(a, b) >= 10 && Math.max(a, b) <= 20) {
        //If both fall between 10 and 20, return the larger value.
        max = Math.max(a, b);
    } else if ((a >= 10) && (a <= 20)) {
        //If both didn't fall between 10 and 20, check if it was a.
        max = a;
    } else {
        //If a didn't fall between 10 and 20, then it must be b.
        max = b;
    }
    return max;
}

答案 1 :(得分:0)

你没有返回0 ..永远..所以.. 9小于10 ..而b大于20所以返回0.我认为你得到9因为当两个数字落在界限。

public int max1020(int a,int b){           int max;

      if((a<10 || a>20) && (b<10 || b>20)) {
      **>> return 0;**
      }

      if(Math.max(a,b) >= 10 && Math.max(a,b) <= 20) {
      max = Math.max(a,b);
      } else {
      max = Math.min(a,b);
      }

      return max;
    }

答案 2 :(得分:0)

你的代码说 如果&amp;&amp; b不在10或20 max = 0之间。

然后继续计算哪个是最大值,哪个是最小值,无论数字是什么。

如果&amp;&amp; b不在10或20之间,则应立即返回0.

例如

public int max1020(int a, int b) {
  int max;

if((a<10 || a>20) && (b<10 || b>20)) {
    return 0;
}

if(Math.max(a,b) >= 10 && Math.max(a,b) <= 20) {
    max = Math.max(a,b);
} else {
 max = Math.min(a,b);
}

return max;
}

答案 3 :(得分:0)

这个怎么样?

public int max1020(int a, int b) {
  int max = 0;
  if (10 <= a && a <= 20)
    max = a;
  if (10 <= b && b <= 20)
    max = Math.max(max, b);
  return max;
}