循环中的空指针
本文关键字:空指针 循环 | 更新日期: 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异常。
最后,你确定需要内循环吗?在我看来,你只需要外部循环遍历每个硬币类型,然后检查供应。