Liu973634245
2018-10-31 23:57
为什么是i<hobbys.length而不是i<=
因为数组的下标是从零开始的,i代表的是下标则应为数组的个数减一如:int[]={1,2,3,4,5} 数组有五个数则其下标与其相对应为int[0], int[1], int[2], int[3], int[4] ,若你i等于数组个数则及其下标到int[5] 而实际上是数组小标int[5]没有对应的数组值则就会报错数组越界异常
ArrayIndexOutOfBoundsException:
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即可
所以如果要写等号的话,要这样写:i<=hobbys.length-1
因为i是从0开始的,如果等于.length,就多了一个值了,越界了
简单讲就比如说有5个箱子,如果i等于<=5,当i=4时,刚好是指针指到第5个箱子,如果i=5,那就是第6个箱子了(因为i是从0开始计算的),但是不存在第6个箱子,就会出错了。
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题