为了账号安全,请及时绑定邮箱和手机立即绑定

遍历数组的所有元素时出现ArrayIndexOutOfBoundsException

遍历数组的所有元素时出现ArrayIndexOutOfBoundsException

Smart猫小萌 2019-12-06 12:50:46
如何处理此异常“ ArrayIndexOutOfBoundsException”,我的代码是:创建一个长度为64的数组,然后初始化每个索引,然后打印索引以确保填满所有索引,但它最多打印63个,然后给出异常!任何的想法    public static void main(String [] arg) {    int [] a=new int [64];    for(int i=1;i<=a.length;i++){        a[i]=i;        System.out.println(i);    }}Java 
查看完整描述

3 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

Java中的数组索引从开始0array.length - 1。因此将循环更改为for(int i=0;i<a.length;i++)


查看完整回答
反对 回复 2019-12-06
?
动漫人物

TA贡献1815条经验 获得超10个赞

参见JLS-Arrays:


如果一个数组有n个分量,我们说n是数组的长度;使用0到n-1(含)之间的整数索引来引用数组的组成部分。


所以你必须遍历 [0,length()-1]


for(int i=0;i<a.length;i++) {

    a[i]=i+1;  //add +1, because you want the content to be 1..64

    System.out.println(a[i]);


}


查看完整回答
反对 回复 2019-12-06
?
桃花长相依

TA贡献1860条经验 获得超8个赞

需要完整的解释吗?读这个

数组的索引始终始于0。因此,当数组中有64个元素时,它们的索引将来自0 to 63。如果要访问第64个元素,则必须通过进行a[63]。


现在,如果我们看看你的代码,那么你写你的条件是for(int i=1;i<=a.length;i++)在这里a.length将返回这是64数组的实际长度。


这里发生了两件事:


当您从1开始索引时,即i=1因此,您正在跳过数组中位于0th索引处的第一个元素。

最后,它试图访问a[64]元素,该65th元素将成为数组的元素。但是您的数组仅包含64个元素。这样你就得到了ArrayIndexOutOfBoundsException。

使用for循环迭代数组的正确方法是:


for(int i=0;i < a.length;i++)


索引从0开始到< array.length。


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 472 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信