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

正在回答

4 回答

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

ArrayIndexOutOfBoundsException:


0 回复 有任何疑惑可以回复我~

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即可


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信