【问题标题】:Return the larger value in the in the given range返回给定范围内较大的值
【发布时间】:2020-10-12 01:13:24
【问题描述】:
当我在 Coding bat 上练习时,我遇到了这个问题,我被困住了。
给定两个正整数值,返回 10...20(含)范围内的较大值,如果两者都不在该范围内,则返回 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;
}
【问题讨论】:
标签:
java
if-statement
operators
【解决方案1】:
您没有处理较小的数字在 10 到 20 范围内的情况,但较高的数字超出了该范围。在这种情况下,您应该返回较小的数字,但您返回的数字较大,超出了范围。
当您的if((a>=10&&a<=20)||(b>=10&&b<=20)) 条件为真时,有 3 种可能性:
- a 和 b 都在 10 到 20 之间,在这种情况下,您应该返回其中较大的值
- 只有 a 介于 10 和 20 之间,在这种情况下,您应该返回 a(即使 b 更高)
- 只有 b 介于 10 和 20 之间,在这种情况下您应该返回 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;
}
}
}