我试图在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;
}发布于 2017-01-30 12:17:25
第一个if语句确保a不小于b (如果a小于b,则交换a和b --这就是涉及temp变量的3个赋值语句所做的)。
如果第二个if语句在所需范围内,则返回a (此时我们知道a >= b)。
如果没有,则如果第三个If语句在所需范围内,则返回b。
否则将返回0(当a和b都不在所需范围内时)。
发布于 2017-01-30 12:22:03
它指出,如果b的值大于a的值,则切换2值。例如,如果a = 10和b = 15
if (b > a) {为真,因此将进入if
int temp = a; temp的值为10。
a = b; a将取值15
b = temp; b将取值10
因此,如果a和b的值大于a的值,则b和a的值将发生切换。因此,a具有更大的价值。
https://stackoverflow.com/questions/41935683
复制相似问题