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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忧伤 中级黑马   /  2013-6-2 10:07  /  1264 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int yyao[]={12,1,13,11,2,15};
for(int i=5;i>-1;i--){
System.out.println(yyao[i]+",");
}
为什么不能写成下面这样
for(int i=yyao.length;i>-1;i--){
System.out.println(yyao[i]+",");
}

评分

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

查看全部评分

4 个回复

倒序浏览
int yyao[]={12,1,13,11,2,15};
for(int i=5;i>-1;i--){
System.out.println(yyao+",");
}
为什么不能写成下面这样
for(int i=yyao.length;i>-1;i--){    //可以啊,不过 不是 i=yyao.length  要改成i=yyao.length-1    最大角标是数组长度-1
System.out.println(yyao+",");
}

评分

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

查看全部评分

回复 使用道具 举报
yyao.length 的 值是6.
楼主可以System.out.println(yyao.length); 输出看看
然后 因为数组下标是从0开始的,所以最后那个元素的下标是5.
而楼主是从下标6开始输出,所以下标越界了,会报错。
应该写成
for(int i=yyao.length - 1;i>-1;i--){
System.out.println(yyao[i]+",");
}

评分

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

查看全部评分

回复 使用道具 举报
二楼的正解,参考下吧
回复 使用道具 举报
楼主:
1、yyao.length 表示数组的长度,不是数组的下标,在您的代码中yyao.length 值为6.
2、代码中
for(int i=yyao.length;i>-1;i--){
System.out.println(yyao+",");//下表最大到5,这里越界了。
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马