首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IndexOutOfBoundsException:索引: 3,大小:3

IndexOutOfBoundsException:索引: 3,大小:3
EN

Stack Overflow用户
提问于 2016-02-14 05:18:25
回答 1查看 3.4K关注 0票数 1

我正在创建一个简单的游戏,其中2个玩家从堆里拿硬币。堆是数组列表的每个元素,每个堆的硬币数量是存储在其中的整数,如下所示。

3堆不同面值的硬币:

4,5,2

但是我遇到了这个异常

代码语言:javascript
运行
复制
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

下面是我的方法

代码语言:javascript
运行
复制
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时也会发生这种情况。

代码语言:javascript
运行
复制
coins.set(index-1, coins.get(index-1) - numCoins);

但我还是以某种方式遇到了这个错误。我知道数组从0开始计算它的元素,我已经看过这些解决方案hereherehere,但我仍然不太明白。

EN

回答 1

Stack Overflow用户

发布于 2016-02-14 05:22:55

您有一个包含三个元素的列表。这些元素位于索引012。你打电话给removeCoinsAt(3, 2)。您的方法是coins.set(index, coins.get(index) - numCoins);。这意味着它正在尝试获取和设置索引3处的值,该索引在列表中不存在。

显然,您不能在超过列表末尾的索引处调整值,而且您知道列表索引只能达到2,那么为什么要期望removeCoinsAt(3, 2)工作呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35385439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档