首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取java.lang.ArrayIndexOutOfBoundsException的System.arraycopy

获取java.lang.ArrayIndexOutOfBoundsException的System.arraycopy
EN

Stack Overflow用户
提问于 2011-09-15 23:04:15
回答 4查看 9.7K关注 0票数 5

获取ava.lang.ArrayIndexOutOfBoundsException的System.arraycopy ..我正在尝试将数据从一个数组复制到另一个数组。但我得到了一个例外

代码语言:javascript
复制
private String array[] = { "NO DATA YET" };


 private void setListData()
    {
        String array2[] = { "Iphone", "Tutorials", "Gallery", "Android",    "item 1", "item 2", "item3", "item 4" };
        System.arraycopy(array2, 0, array, 0, array2.length);
    }
EN

回答 4

Stack Overflow用户

发布于 2011-09-15 23:06:30

您正在尝试将8个项目复制到长度为1的数组中。您不能这样做。

来自the documentation

否则,如果满足以下任一条件,则会引发IndexOutOfBoundsException,并且不会修改目标:

长度参数为负。长度参数为负。长度参数为negative.

  • srcPos+length大于srcPos,源的长度大于目标数组的长度dest.length。

在本例中,destPos + length为8,dest.length为1,因此抛出异常。

注意,Java中的数组有固定的长度。如果你想要一个可扩展的容器,看看ArrayList

票数 10
EN

Stack Overflow用户

发布于 2011-09-15 23:07:28

因为array的长度是1。

声明array[] = { "NO DATA YET" };创建了一个长度为1的数组,其中包含一项。

而是将目标数组声明为:

代码语言:javascript
复制
private String array[] = new String[8];
票数 1
EN

Stack Overflow用户

发布于 2011-09-15 23:08:44

数组的长度只有1,并且您正在尝试将8个元素从array2复制到数组中。尝试使用ArrayList或其他可以在需要时进行扩展的工具。

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

https://stackoverflow.com/questions/7433067

复制
相关文章

相似问题

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