课程
/后端开发
/Java
/Java入门第一季(IDEA工具)升级版
为什么是i<hobbys.length而不是i<=
2018-10-31
源自:Java入门第一季(IDEA工具)升级版 6-5
正在回答
因为数组的下标是从零开始的,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个箱子,就会出错了。
举报
0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始
5 回答为什么只有这样才可以的? for(int i=0 i<hobbys.length;i++){ for(String i=0 i<hobbys.length;i++){才可以的???
1 回答for(int i==0; i<hobbys.length; i++){ 这句代码有什么问题
3 回答我想问一下for(i=0;i<hobbys.length;i++)能改成for(i=0;i<3;i++)吗?
5 回答为什么i<=hobbys.length时会出现如下结果
5 回答为什么是i%2 == 1。而不是1%2 != 0