循环中的空指针

时间:2014-05-18 11:25:18

标签: c# loops

我正在尝试制作一个可以分配给定数量的变化的程序。基本上我有一种方法来查看库存货币是否可以满足给定值。

这是循环:

    private int check(int v)
    { 
        int in = v;
        for (int i = valueTable.Length; i >= 0; i--)//from biggest coin to smallest
        {
            for (int j = 0; j < supplyTable[i-1]; j++)//for the supply of the particular coin
            {
                if (in >= coinValueTable[i-1] && coinSupplyTable[i+1] > 0)
                    in -= coinValueTable[i-1];
            }
        }
        return rt;
    }

运行debug时,外部循环的第一次迭代似乎只建立第二个循环,并且不执行它。内循环仅在外循环的第二次迭代中执行,这实际上意味着我错过了valueTable中的最后一个值。我用for循环玩了一下,但似乎总是错过了数组的末尾。

关于为什么内循环不会在外环的第一次迭代中运行的任何想法?提前致谢。

1 个答案:

答案 0 :(得分:3)

您已设置coinSupplyTable[7] == 0,因此第一次迭代(采用最后一个元素)自然具有条件j < 0,该条件立即为false,因此循环不会运行。 没有错;没有股票意味着没有内循环。

此外,内部循环内的if条件不正确。您访问coinSupplyTable[i+1],这将导致索引超出范围异常。

最后,你确定需要内循环吗?在我看来,你只需要外循环迭代每种硬币类型,然后检查供应。