【发布时间】:2020-08-16 02:24:28
【问题描述】:
我试图了解我的代码存在什么问题。 这是任务和我的代码:
编写一个名为 canPack 的方法,其中包含三个 int 类型的参数 bigCount、smallCount 和 goal。
参数bigCount表示大面粉袋的数量(每袋5公斤)。
参数smallCount表示小面粉袋的数量(每袋1公斤)。
参数goal表示组装一个包装所需的目标面粉公斤数。
因此,bigCount 和 smallCount 的公斤数之和必须至少等于目标的值。如果可以用目标公斤面粉制作包装,则该方法应返回 true。
如果总和大于目标,请确保仅将满袋用于目标金额。例如,如果goal = 9、bigCount = 2 和smallCount = 0,则该方法应返回false,因为每个大袋子是5 公斤,不能分开。但是,如果goal = 9、bigCount = 1 和smallCount = 5,则该方法应该返回true,因为1 个完整的bigCount bag 和4 个完整的smallCount bag 相等,如果还有剩余的包也可以。
如果任何参数为负,则返回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,但事实并非如此。有人可以告诉我我做错了什么吗? 提前致谢
【问题讨论】:
-
请解释
bigCountKilos + smallCountKilos >= goal && bigCountKilos % goal == 0的原因 -
另外,请问:这是某种任务吗?另外,想想
goal = 20, big = 4, small = 3的案例@ -
对不起
goal = 19, big = 4, small = 3