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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨旭 黑马帝   /  2012-1-2 16:25  /  2702 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨旭 于 2012-1-5 06:37 编辑

数组遍历时,需要for循环  for(int x = 0 ; x < arr.length ;x++)
看视频时,第一个参数  有时候从0开始 有时候从1 开始
第二个参数 有时候是arr.length   有时候是arr.length -1
都搞糊涂了啊  怎么区分 什么时候 用哪一个啊?
兄弟姐妹们,能给几个例子吗?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

8 个回复

正序浏览
杨旭 黑马帝 2012-1-5 06:37:34
9#
{:soso_e181:}谢谢大家
回复 使用道具 举报
不需要死扣0还是1,length还是length-1,这个根据具体需求定
只需要记住,数组的下表是从0开始的。如果数组长度是5,那各个元素下标就是0---4,
而length就是数组的长度
然后根据需求看是用那个吧

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
以冒泡为例吧
public static void threeMethod() {
   int array[] = {-5,-9,2,5,10,7,895};
  
   for(int i = 0 ; i < array.length ; i ++) {
    for(int j = i +1 ; j < array.length ; j ++) {
     if(array[i] < array[j]) {
      int temp = array[i];
      array[i] = array[j];
      array[j] = temp;
     }
    }
   }
   for(int i = 0 ; i < array.length ; i ++) {
    System.out.print(" "+array[i]+" ");
   }
}

}}
第一个for循环,即外层循环,控制的是循环次数,所以不管你是0到9还是1到10
效果是一样的,只要相差值相同即可
第二个就有些讲究了j是从i+1开始的
因为第一次第一个与第二个相比,正好是i和i+1相比,
第二轮就是i+1和i+1+1相比,这样就遍历了所有元素
当然,你也可以不管什么i+1,j+1,所有都写成0开始到结尾结束
只是这样效率低一点罢了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
在给你演示一下   for(int x = 0 ;           x < arr.length ;                          x++)
                                 角标位      从角标位开始遍历                  角标位增加1

也就是说   x定义的是角标位,   X<length控制的是遍历数组的长度。X<length-1控制的是遍历数组的长度,而数组长度每次-1;

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
数组遍历也就是访问数组中每个元素,有多少个元素就要循环几次,
数组下表是从0开始的,那么它最后一个元素的下标就是arr.length-1,
不管是1->arr.length,还是0->arr.length-1,它的循环次数是不变的。
其实在循环中参数一和参数二是不做固定的,只要它的循环次数等于数组元素的个数就可以

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 房宝彬 于 2012-1-2 16:37 编辑

这个确实要根据需求来说的,但是你这 length有点随意....

for(int i = 1; i<arr.length -1 ; ++i)
这个 在数组长度为10的话,是每遍历一次,下次遍历数组的长度都少1次,length表示数组的长度

for(int x = 0 ; x < arr.length ;x++)
而这个表示的是  每一次都跟数组的长度去遍历。长度不会减少

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
i 从 0 到 9 是 10次, i从 1 到 10 也是10次{:soso_e112:}
回复 使用道具 举报
用哪一个都可以 看个人习惯,不过从计算机的角度,一般是从0开始哦
举个例子  数组下标是 0 到 9 ,但是要记住 这一共是10个元素 ,数组的长度是10 , arr.length = 10,可以 for(int i = 0; i<arr.length -1 ; ++i) 或 for(int i = 1; i<arr.length  ; ++i)
我比较推荐 第一种写法,不过可以具体情况具体分析哦

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马