【问题标题】:Return the larger value if it is in the range 10..20如果在 10..20 范围内,则返回较大的值
【发布时间】:2017-01-30 20:22:03
【问题描述】:

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

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;
}

【问题讨论】:

  • 如果 a 大于 b,第一个 if 将被跳过,因为 a 已经大于 bfirst 它取 a 中较大的值。那么你必须知道,一旦你调用了一个 return 语句,剩下的就被跳过了。在 a 中有较大的值后,他们检查 a 是否在 10 到 20 之间。如果是,则返回 a。否则它检查 b 是否在范围内。如果是,则返回 b,如果它们都不在 10 和 20 之间,则返回 0
  • 如果b 更大,则第一部分基本上交换ab,因此a 在以下部分中总是更大的值。评论说“知道 a 更大......”因为之前的部分确保 a 大于或至少等于 b
  • 感谢大家的帮助。

标签: java


【解决方案1】:

第一个 if 语句确保 a 不小于 b(如果 a 小于 b,它将交换 ab - 这就是涉及temp 变量做)。

如果第二个 if 语句在所需范围内,则返回 a(此时我们知道 a &gt;= b)。

如果不是,则第三个 if 语句返回 b,如果它在要求的范围内。

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

【讨论】:

  • 非常感谢您的回答
【解决方案2】:

表示如果b的值大于a的值,则切换2个值。所以,例如,如果a = 10b = 15

if (b &gt; a) { 为真,所以会进入 if

int temp = a; temp 将取值 10

a = b;a 将取值 15

b = temp; b 将取值 10

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

【讨论】:

  • 感谢您的解释。
  • 这个例子真的很有帮助,我把 temp 想象成一个容器,你把 10 放进去,然后把 15 分配给 a,把 10 分配给 b,交换完成。
  • temp 是一个变量,就像 ab 一样。它仅在if 语句中使用,以便交换两个值。请注意,除了temp,它可以有任何名称(Java 可接受的任何名称——您可以在此处找到更多信息:docs.oracle.com/javase/tutorial/java/nutsandbolts/…),例如,它可以命名为c
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多