Return给定范围内较大的值
Return the larger value in the in the given range
当我在练习 Coding bat 时,我遇到了这个问题,我被卡住了。
给定两个正整数值,return 10...20(含)范围内的较大值,或者 return 0,如果两者都不在该范围内。
max1020(11,19)--> 19
max1020(19,11)--> 19
max1020(11,9)--> 11
你能帮我看看我的解决方案出了什么问题吗:-
public int max1020(int a, int b) {
if((a>=10&&a<=20)||(b>=10&&b<=20)){
int max;
if(a>b){
max=a;
}else{
max=b;
}
return max;
}
return 0;
}
您没有处理较低数字在 10 到 20 范围内但较高数字超出该范围的情况。在那种情况下,您应该 return 较小的数字,但您 return 较大的数字,这超出了范围。
当你的if((a>=10&&a<=20)||(b>=10&&b<=20))
条件为真时,有3种可能:
- a 和 b 都在 10 到 20 之间,在这种情况下,您应该 return 较大的
- 只有 a 在 10 到 20 之间,在这种情况下你应该 return a(即使 b 更高)
- 只有 b 在 10 到 20 之间,在这种情况下你应该 return b(即使 a 更高)
你可以这样写:
public int max1020(int a, int b) {
if (a >= 10 && a <= 20) {
if (b >= 10 && b <= 20) {
return a > b ? a : b;
} else {
return a;
}
} else {
if (b >= 10 && b <= 20)) {
return b;
} else {
return 0;
}
}
}
当我在练习 Coding bat 时,我遇到了这个问题,我被卡住了。 给定两个正整数值,return 10...20(含)范围内的较大值,或者 return 0,如果两者都不在该范围内。 max1020(11,19)--> 19
max1020(19,11)--> 19
max1020(11,9)--> 11
你能帮我看看我的解决方案出了什么问题吗:-
public int max1020(int a, int b) {
if((a>=10&&a<=20)||(b>=10&&b<=20)){
int max;
if(a>b){
max=a;
}else{
max=b;
}
return max;
}
return 0;
}
您没有处理较低数字在 10 到 20 范围内但较高数字超出该范围的情况。在那种情况下,您应该 return 较小的数字,但您 return 较大的数字,这超出了范围。
当你的if((a>=10&&a<=20)||(b>=10&&b<=20))
条件为真时,有3种可能:
- a 和 b 都在 10 到 20 之间,在这种情况下,您应该 return 较大的
- 只有 a 在 10 到 20 之间,在这种情况下你应该 return a(即使 b 更高)
- 只有 b 在 10 到 20 之间,在这种情况下你应该 return b(即使 a 更高)
你可以这样写:
public int max1020(int a, int b) {
if (a >= 10 && a <= 20) {
if (b >= 10 && b <= 20) {
return a > b ? a : b;
} else {
return a;
}
} else {
if (b >= 10 && b <= 20)) {
return b;
} else {
return 0;
}
}
}