如果它在10..20范围内,则返回较大的值

时间:2017-01-30 12:13:41

标签: java

我正在尝试在codingbat上解决这个问题,问题是给定2个正的int值,返回10..20(含)范围内的较大值,如果两个都不在该范围内,则返回0。下面给出了解决方案,但是我无法理解第一部分,因为评论说较大的值是a,但代码说(b> a)这是什么意思:int temp = a; a = b; b = temp;。任何人都可以解释一下......

public int max1020(int a, int b) {
  // First make it so the bigger value is in a
  if (b > a) {
    int temp = a;
    a = b;
    b = temp;
  }

  // Knowing a is bigger, just check a first
  if (a >= 10 && a <= 20) return a;
  if (b >= 10 && b <= 20) return b;
  return 0;
}

2 个答案:

答案 0 :(得分:2)

第一个if语句确保a不小于b(如果a小于b,则交换a和{{ 1}} - 那是涉及b变量的3个赋值语句的内容。

第二个if语句返回temp,如果它在所需范围内(此时我们知道a)。

如果没有,第三个if语句会返回a >= b,如果它在所需范围内。

否则返回0(当ba都不在要求范围内时)。

答案 1 :(得分:0)

它表示如果b的值大于a的值,请切换2个值。因此,例如,如果a = 10b = 15

if (b > a) {是真的,所以会进入if

int temp = a; temp将取值10

a = b; a将取值15

b = temp; b将取值10

因此,如果a的值大于b的值,则会切换ba的值。因此,a将具有更大的价值。