所以我的问题是我有一台自动售货机。自动售货机具有插槽,每个插槽具有最大数量的项目。
如果我使用产品名称和数量运行补货方法,我需要将数量添加到提供的产品中。我有一个字符串数组和一个stock数组,索引是插槽号。
问题在于,如果我在列表中有两次相同的命名产品,那么产品的第一个索引将达到最大值,但产品的第二个实例总是比我需要的少一个。
实施例。 我在0号和1号槽口有糖果,最多10个。 运行补货(糖果,8)然后补货(糖果,5)应该在0号槽和槽2中提供3个。但我得到10和2.
public void restockProduct(String product, int quantity) {
int index = -1;
// If there is nothing to add, quit
if (quantity == 0) {
return;
}
for (int i = 0; i < products.length; i++) {
//Find location of product
if (products[i].equals(product)) {
index = i;
if(stock[index] <= max)
break;
}
}
if(index >=0){
stock[index]++;
restockProduct(product, quantity-1);
}
感谢
答案 0 :(得分:1)
看起来这段代码和max
为10,你在第一场比赛中获得11分,在第二场比赛中获得2分,因为这一行:
if(stock[index] <= max)
如果广告位已满,等于max
,那么您仍然选择稍后递增。尝试严格不到。另外为了清楚起见,结合两个if
条件。如果产品名称与匹配且未满,则您只想选择插槽。
if (products[i].equals(product) && stock[i] < max) {
index = i;
break;
}
当没有插槽符合这两个条件时,你还必须处理这种情况。
答案 1 :(得分:0)
你对这个问题的思考太过分了
public void restockProduct(String product, int quantity)
{
for (int i = 0; i < products.length; i++)
{
//Find location of product
if (products[i].equals(product))
{
int diff = max = stock[i];
stock[i] += diff;
quantity -= diff;
}
}
}