Я пытаюсь понять, в чем проблема с моим кодом. Вот задача и мой код:
Напишите метод с именем canPack с тремя параметрами типа int с именем bigCount, smallCount и goal.
Параметр bigCount представляет количество больших мешков с мукой (5 кг каждый).
Параметр smallCount представляет количество маленьких мешков с мукой (По 1 килограмму).
Параметр target представляет целевое количество килограммов муки, необходимое для сборки упаковки.
Следовательно, сумма килограммов bigCount и smallCount должна быть как минимум равна значению цели. Метод должен возвращать значение true, если возможно сделать упаковку с целевыми килограммами муки.
Если сумма больше цели, убедитесь, что для достижения цели используются только полные пакеты. Например, если target = 9, bigCount = 2 и smallCount = 0, метод должен возвращать значение false, поскольку каждый большой мешок весит 5 кг и не может быть разделен. Однако, если цель = 9, bigCount = 1 и smallCount = 5, метод должен возвращать значение true, поскольку 1 полная сумка bigCount и 4 полных сумки smallCount имеют одинаковую цель, и это нормально, если остались дополнительные сумки.
Если какой-либо из параметров отрицательный, вернуть false.
ПРИМЕР ВХОДА / ВЫХОДА:
canPack (1, 0, 4); должен вернуть false, поскольку bigCount равен 1 (большой мешок 5 кг), а цель - 4 кг.
canPack (1, 0, 5); должен вернуть true, поскольку bigCount равен 1 (большой мешок 5 кг), а цель - 5 кг.
canPack (0, 5, 4); должен вернуть true, поскольку smallCount равен 5 (маленькие мешки по 1 кг), а цель - 4 кг, и у нас осталось 1 мешок, что в порядке, как указано выше.
canPack (2, 2 11); должен возвращать значение true, поскольку bigCount равен 2 (биг-бэги по 5 кг каждая), а smallCount равен 2 (небольшие мешки по 1 кг), весит всего 12 кг, а цель - 11 кг.
canPack (-3, 2, 12); должен возвращать false, поскольку bigCount является отрицательным.
public static boolean canPack(int bigCount, int smallCount, int goal) {
int bigCountKilos = bigCount * 5;
int smallCountKilos = smallCount;
if (bigCount < 0 || smallCount < 0 || goal < 0) {
return false;
} else {
if (bigCountKilos >= goal && bigCountKilos % goal == 0) {
return true;
} else if (bigCountKilos + smallCountKilos >= goal && bigCountKilos % goal == 0) {
return true;
} else if (bigCountKilos < goal && bigCountKilos + smallCountKilos >= goal) {
return true;
} else {
return false;
}
}
}
public static void main(String[] args) {
System.out.println(canPack(4, 18, 19));
}
Экземпляр для 4,18,19 должен возвращать true, но это не так. Может кто-нибудь сказать мне, что я делаю не так? Заранее спасибо