我不明白这个Java问题的解决方案

时间:2019-07-31 07:27:23

标签: java

请帮助您理解此问题的解决方案。

给出2个正整数值,返回在10..20(含)范围内的较大值,如果两个都不在该范围内,则返回0。

max1020(11,19)→19 max1020(19,11)→19 max1020(11,9)→11

public int max1020(int a, int b) {
  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;
}

我不明白第一个IF语句块。请帮助理解这一部分。

if (b > a) {
    int temp = a;
    a = b;
    b = temp;
  }

谢谢

2 个答案:

答案 0 :(得分:1)

如果b大于a,则此代码交换两个数字。这将确保在此代码之后,您知道a将大于b。由于您需要返回介于10到20之间的较大值,因此如果满足条件,则需要首先检查较大的数字。下面的代码可确保您首先检查较大的数字。

if (b > a) {
    int temp = a;
    a = b;
    b = temp;
  }
// Knowing a is bigger, just check a first

答案 1 :(得分:0)

if (b > a) {
    int temp = a;
    a = b;
    b = temp;
  }

如果b大于a。这部分代码交换值,例如:

如果a = 8并且b = 10之后,您将拥有a = 10和b = 8。

临时帮忙交流。

希望对您有帮助!