Возникает вопрос: учитывая 2 значения int больше 0, верните любое значение, ближайшее к 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, и для всех тестов, которые он показывает, этот код работает, но когда он заканчивает и отображает «другие тесты ", этот код не работает. Я полагаю, что есть определенная ситуация, когда это не сработает, но я не могу думать об этом прямо сейчас. Есть предположения?
Если a 18 и b - 19, то что возвращает ваша программа и почему? Не является ли число, самое близкое к 21 в нижней части наибольшего числа? – dcaswell
Вам не хватает случаев, когда хотя бы один из них ровно 21. –