我很难理解为什么我的代码无法解决这个问题我试图解决这个问题。
问题: 给定2个正的int值,返回10..20(含)范围内的较大值,如果两个值都不在该范围内,则返回0。
我的代码:
public int max1020(int a, int b) {
int max;
if((a<10 || a>20) && (b<10 || b>20)) {
max = 0;
}
if(Math.max(a,b) >= 10 && Math.max(a,b) <= 20) {
max = Math.max(a,b);
} else {
max = Math.min(a,b);
}
return max;
}
除了a = 9和b = 21之外,每个数字都有效,我只是不明白。我哪里出错了?
答案 0 :(得分:0)
编辑原始答案,因为我监督了一些案件。
以下内容适用于您喜欢的内容
static int max1020(int a, int b) {
int max = 0;
if ((a < 10 || a > 20) && (b < 10 || b > 20)) {
//If neither fall between 10 and 20, return immediately.
return max;
}
if (Math.max(a, b) >= 10 && Math.max(a, b) <= 20) {
//If both fall between 10 and 20, return the larger value.
max = Math.max(a, b);
} else if ((a >= 10) && (a <= 20)) {
//If both didn't fall between 10 and 20, check if it was a.
max = a;
} else {
//If a didn't fall between 10 and 20, then it must be b.
max = b;
}
return max;
}
答案 1 :(得分:0)
你没有返回0 ..永远..所以.. 9小于10 ..而b大于20所以返回0.我认为你得到9因为当两个数字落在界限。
public int max1020(int a,int b){ int max;
if((a<10 || a>20) && (b<10 || b>20)) {
**>> return 0;**
}
if(Math.max(a,b) >= 10 && Math.max(a,b) <= 20) {
max = Math.max(a,b);
} else {
max = Math.min(a,b);
}
return max;
}
答案 2 :(得分:0)
你的代码说 如果&amp;&amp; b不在10或20 max = 0之间。
然后继续计算哪个是最大值,哪个是最小值,无论数字是什么。
如果&amp;&amp; b不在10或20之间,则应立即返回0.
例如
public int max1020(int a, int b) {
int max;
if((a<10 || a>20) && (b<10 || b>20)) {
return 0;
}
if(Math.max(a,b) >= 10 && Math.max(a,b) <= 20) {
max = Math.max(a,b);
} else {
max = Math.min(a,b);
}
return max;
}
答案 3 :(得分:0)
这个怎么样?
public int max1020(int a, int b) {
int max = 0;
if (10 <= a && a <= 20)
max = a;
if (10 <= b && b <= 20)
max = Math.max(max, b);
return max;
}