Проблема здесь кодирования летучей мыши Java заставила меня растянуть немного:пример кода Java обзор (makeChocolate в codingbat)
Проблема:
Мы хотим, чтобы сделать пакет целевых килограммов шоколада. У нас есть небольшие бары (по 1 килограмм каждый) и большие бары (по 5 килограммов каждый). Верните количество маленьких баров, чтобы использовать, предполагая, что мы всегда используем большие бары перед небольшими барами. Возврат -1, если это невозможно.
makeChocolate (4, 1, 9) → 4 makeChocolate (4, 1, 10) → -1 makeChocolate (4, 1, 7) → 2
http://codingbat.com/prob/p191363
я мог придумать с этим в качестве решения, я не уверен, что это лучший способ, который любой энтузиаст хотел бы рассмотреть, с большим удовольствием! Я напечатал это без компилятора или что-нибудь так, простите меня за углубления:
ЛЮБОГО ЛУЧШЕ ОТВЕТЫ БЫ ОЦЕНЕНЫ:
public int makeChocolate(int small, int big, int goal) {
if(goal<5&&small>=goal)
{
return goal;
}
if(goal<5&&small<goal)
{
return -1;
}
if(goal>=5)
{
if(5*big>goal)
{
int temp=goal/5;
if(goal-temp*5<=small)
{
return goal-temp*5;
}
if(goal-temp*5>small)
{
return -1;
}
}
if(5*big<goal)
{
if(small<(goal-5*big))
{
return -1;
}
if(small>=(goal-5*big))
{
return goal-5*big;
}
}
}
return 0;
}
Side Примечание: Не используйте магические числа, изменение '5' быть какой-то постоянный со значимым именем. – Maroun
Слишком много вложенных операторов 'if' являются признаком того, что должен быть метод обработки логики. Я правильно назвал метод, который также дал бы больше значения для кода, который облегчит его впитывание. – Bart
Почему бы просто не проверить smallBar = GOAL_KILO% BIG_BAR – Infested