我正在创建一个简单的游戏,其中2个玩家从堆里拿硬币。堆是数组列表的每个元素,每个堆的硬币数量是存储在其中的整数,如下所示。
3堆不同面值的硬币:
4,5,2
但是我遇到了这个异常
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3下面是我的方法
static void removeCoinsAt(int index, int numCoins){
//exception on this line
coins.set(index, coins.get(index) - numCoins);
for(int i = 0; i < coins.size(); i ++){
int val = coins.get(i);
if (val == 0) {
coins.remove(i);
}
}
}即使当index =3和numCoins = 2时也会发生这种情况。
coins.set(index-1, coins.get(index-1) - numCoins);但我还是以某种方式遇到了这个错误。我知道数组从0开始计算它的元素,我已经看过这些解决方案here、here和here,但我仍然不太明白。
发布于 2016-02-14 05:22:55
您有一个包含三个元素的列表。这些元素位于索引0、1和2。你打电话给removeCoinsAt(3, 2)。您的方法是coins.set(index, coins.get(index) - numCoins);。这意味着它正在尝试获取和设置索引3处的值,该索引在列表中不存在。
显然,您不能在超过列表末尾的索引处调整值,而且您知道列表索引只能达到2,那么为什么要期望removeCoinsAt(3, 2)工作呢?
https://stackoverflow.com/questions/35385439
复制相似问题