Java问题:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

完全是按着课本写的,但是报错了不知道是什么问题。望各位大大帮忙看一下。代码:classCopyArray{publicstaticvoidmain(Stringargs[... 完全是按着课本写的,但是报错了不知道是什么问题。望各位大大帮忙看一下。

代码:
class CopyArray{

public static void main(String args[]){
char a[]={'a','b','c','d','e','f'},b[]={'1','2','3','4','5','6'};
int c[]={1,2,3,4,5,6},d[]={-1,-2,-3,-4,-5,-6};
System.arraycopy(a, 0, b, 2, c.length);
System.arraycopy(c, 2, d, 2, c.length-3);
System.out.printf("\narray a: ");
for(int i=0;i<a.length;i++){
System.out.printf("%3c",a[i]);
}
System.out.printf("\narray b: ");
for(int i=0;i<b.length;i++){
System.out.printf("%3c",b[i]);
}
System.out.printf("\narray c: ");
for(int i=0;i<c.length;i++){
System.out.printf("%3d",c[i]);
}
System.out.printf("\narray d: ");
for(int i=0;i<d.length;i++){
System.out.printf("%3d",d[i]);
}
}
}

报错:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at CopyArray.main(CopyArray.java:5)
展开
 我来答
风风风姬姬姬
2018-04-04 · TA获得超过8263个赞
知道小有建树答主
回答量:19
采纳率:100%
帮助的人:3290
展开全部

1.验证错误

有一种情况非常匪夷所思:即使你确定Java安装正确,但仍然会报错!如果出现这种情况,你可以通过验证Java是否可以正常工作来排除这个错误,点击这个页面,就可以进行验证。如果可以正常工作,那就说明没有问题。

2.与旧版本冲突

如果Java安装成功,但没有正常工作,这个时候你需要查看Windows的控制面板,看看里面是否存在Java的控制版块。如果没有,问题往往是JavaFX与旧的Java代码冲突导致的。

解决办法是,在Windows控制面板中删除所有的Java实例,然后清理Windows中遗留的Java代码片段,重新安装即可。

3.使用离线安装

安装Java,通常我们都会使用在线的方式,但这种方式往往都会出现一些稀奇古怪的问题。所以,我们不妨使用离线的安装方式。在Java的官方网站上,你可以选择适合自己系统的Java安装包。

4.尝试32位版本

相信很多使用64位版本系统的开发者,都会选择适合这个系统版本的Java,看似这是个合理的选择。但是,相比于64位版本,使用32位版本的Java好像影响也不是很大。所以,如果你安装64位版本遇到麻烦了,这里建议你换成32位版本。

5.使用管理员权限安装

如果你使用Windows 7或Windows 8系统安装Java失败时,你可以尝试下使用管理员(administrator)权限进行安装。首先,你需要下载好所需的Java的安装包,然后右键点击文件,选择“以管理员身份运行”选项。

6.暂时禁用用户账户控制

有开发者表示用户账户控制功能可能会影响Java的安装。如果你确实怀疑,你可以暂时禁用它。当然,不同的Windows版本关闭它的方式不一样。

7.设置IE浏览器的安全性为默认级别

如果你的Internet Explorer的安全级别比默认要高,或者设置的是自定义的安全级别,那么很可能造成Java的安装失败。这时候你只要将其设置为默认级别即可。打开IE浏览器,进入“Internet选项”,这里面可以设置安全级别。

z871472639
推荐于2018-02-27 · TA获得超过249个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:140万
展开全部
System.arraycopy(a, 0, b, 2,c.length);
这句话异常 数组拷贝是 越界了

System.arraycopy();这个方法是把 a 数组 中的元素从 第0 个元素 拷贝到
b数组的 从 第2 个索引之后 c.length位
而 b的长度总共为 6 那么从b的第二位拷贝 6 位到b的话就越界了所以 异常
你可以把 拷贝的长度改小一点 如 1,2,3,等
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xixiaohui002
2014-10-10 · TA获得超过1238个赞
知道小有建树答主
回答量:673
采纳率:50%
帮助的人:645万
展开全部
System.arraycopy(a, 0, b, 2, c.length);

这句话数组下标溢出,可以改成
System.arraycopy(a, 0, b, 2, c.length-3);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hzluluguest
2014-10-10 · 超过21用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:46.1万
展开全部
数组下标越界
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式