A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© songkaihua 中级黑马   /  2014-12-12 23:37  /  1921 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 songkaihua 于 2014-12-21 21:48 编辑

用for遍历,那个x的范围,什么情况下想x=0,什么情况下x=1?x<=arr.length行吗?运行的时候我也不知道为啥有时候会显示超出范围,和x有关吗?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

8 个回复

倒序浏览
如果你循环里有用X当数组的角标的话  那x的范围肯定不能超过数组的角标范围呀
数组.length 拿到的是数组的长度    但是因为角标是从0开始的  所以角标的范围就是 0 到 数组.length-1 之间
X就不能 =数组.length 了,会越界

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
我觉得是你对数组理解不够才会不明白这个的,for循环主要使用对数组遍历的,里边的限定条件就是根据题意写的
for(int i=0;i<arr.length;i++)、for(int i=0;i<=arr.length-1;i++)、for(int i=1;i<=arr.length;i++)表示的意思是差不多的,看你是要用数组的下标进行循环还是用数组的元素个数,你只需要明白每个分号代码的含义就可以理解了。
第一个分号前的语句i=0是遍历的起始位置,两个分号之间的是遍历的最终位置,最后的i++表示没进行操作一次i值+1.
回复 使用道具 举报
Int a[]={2,3,4,1,6,4};
回复 使用道具 举报
这要看你在循环中怎么写了,但总的是要保证你遍历的角标范围是0----->length-1。你要是在for循环上写x=1;x<=arr.length;x++,那循环体里就得写arr[x-1]啦!!
回复 使用道具 举报
Quasimodo 发表于 2014-12-13 00:26
如果你循环里有用X当数组的角标的话  那x的范围肯定不能超过数组的角标范围呀
数组.length 拿到的是数组的 ...

恩恩,懂了!谢谢!
回复 使用道具 举报
角标是从0开始的!具体要看你先赋的初值!
回复 使用道具 举报
chudaming213 发表于 2014-12-13 22:45
这要看你在循环中怎么写了,但总的是要保证你遍历的角标范围是0----->length-1。你要是在for循环 ...

我咋觉得应该是arr[x+1],为啥是-1?
回复 使用道具 举报
数组的下标是才从0开始的,所以一般都是写for(x=0;x<arr.length;x++); 硬要写x=1,那么下面的程序中写arr[x-1]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马