【发布时间】: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更大,则第一部分基本上交换a和b,因此a在以下部分中总是更大的值。评论说“知道 a 更大......”因为之前的部分确保a大于或至少等于b。 -
感谢大家的帮助。
标签: java