问答详情
源自:6-5 使用循环操作 Java 中的数组

为什么是i<hobbys.length而不是i<=

为什么是i<hobbys.length而不是i<=

提问者:Liu973634245 2018-10-31 23:57

个回答

  • weixin_慕斯4584881
    2019-04-17 17:49:40

    因为数组的下标是从零开始的,i代表的是下标则应为数组的个数减一如:int[]={1,2,3,4,5} 数组有五个数则其下标与其相对应为int[0], int[1], int[2], int[3], int[4] ,若你i等于数组个数则及其下标到int[5] 而实际上是数组小标int[5]没有对应的数组值则就会报错数组越界异常

    ArrayIndexOutOfBoundsException:


  • lenerthy
    2018-11-01 16:20:34

    hobbys.length表示数组的长度,这个题的数组有3个,所以hobbys.length的值是3,若i<=3,那么循环判定成立后执行完时i的值为4,此时要输出hobbys[4],就超出了数组的范围,会报错

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    	at HelloWorld.main(HelloWorld.java:10)
    改为i<hobbys.length 或者i<=hobbys.length-1即可


  • 小小小螺号
    2018-11-01 00:50:27

    所以如果要写等号的话,要这样写:i<=hobbys.length-1

  • 小小小螺号
    2018-11-01 00:49:25

    因为i是从0开始的,如果等于.length,就多了一个值了,越界了

    简单讲就比如说有5个箱子,如果i等于<=5,当i=4时,刚好是指针指到第5个箱子,如果i=5,那就是第6个箱子了(因为i是从0开始计算的),但是不存在第6个箱子,就会出错了。