问题来了:给定 2 个大于 0 的 int 值,返回最接近 21 的值,不要越过。如果他们都过去,则返回 0。
blackjack(19, 21) → 21
blackjack(21, 19) → 21
blackjack(19, 22) → 19
到目前为止我所拥有的:
public int blackjack(int a, int b) {
if (a>21 && b>21){
return 0;
}
if (a<21 && b>21){
return a;
}
if (b<21 && a>21){
return b;
}
if (21-a < 21-b){
return a;
}
return b;
}
这个问题来自codingbat.com,对于它显示的所有测试,这段代码都有效,但是当它完成并显示“其他测试”时,这段代码失败了。我想在某些情况下这是行不通的,但我现在想不出。有什么想法吗?