Java问题:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
代码:
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) 展开
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选项”,这里面可以设置安全级别。
这句话异常 数组拷贝是 越界了
System.arraycopy();这个方法是把 a 数组 中的元素从 第0 个元素 拷贝到
b数组的 从 第2 个索引之后 c.length位
而 b的长度总共为 6 那么从b的第二位拷贝 6 位到b的话就越界了所以 异常
你可以把 拷贝的长度改小一点 如 1,2,3,等
这句话数组下标溢出,可以改成
System.arraycopy(a, 0, b, 2, c.length-3);