循环中的空指针

本文关键字:空指针 循环 | 更新日期: 2023-09-27 18:03:58

我正在尝试制作一个程序,可以为给定的金额分配更改。基本上,我有一个方法来查看给定的值是否可以由股票中的货币满足。

这是循环:

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

运行调试时,外部循环的第一次迭代似乎只建立了第二个循环,而不执行它。内部循环只在外部循环的第二次迭代时执行,这实际上意味着我错过了valueTable中的最后一个值。我已经尝试了一些for循环,但是它似乎总是错过数组的末尾。

对于内循环为什么不在外循环的第一次迭代中运行有什么想法吗?提前感谢。

循环中的空指针

您已经设置了coinSupplyTable[7] == 0,因此自然地,第一次迭代(接受最后一个元素)具有条件j < 0,该条件立即为假,因此循环不会运行。这没什么不对;没有库存意味着没有内部循环。

也,你的if条件内循环是不正确的。您访问coinSupplyTable[i+1],这将导致Index out of Range异常。

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