将数量添加到数组中的多个索引(java)

时间:2013-04-12 21:50:26

标签: java arrays string

所以我的问题是我有一台自动售货机。自动售货机具有插槽,每个插槽具有最大数量的项目。

如果我使用产品名称和数量运行补货方法,我需要将数量添加到提供的产品中。我有一个字符串数组和一个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);
    }

感谢

2 个答案:

答案 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;
        }
    }
}