黑马程序员技术交流社区

标题: 数组for循环问题 [打印本页]

作者: 忧伤    时间: 2013-6-2 10:07
标题: 数组for循环问题
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]+",");
}
作者: 赵乐    时间: 2013-6-2 10:12
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+",");
}
作者: 吴文彬    时间: 2013-6-2 10:15
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]+",");
}
作者: HM张博文    时间: 2013-6-2 11:02
二楼的正解,参考下吧
作者: 孔雀东南飞    时间: 2013-6-2 13:57
楼主:
1、yyao.length 表示数组的长度,不是数组的下标,在您的代码中yyao.length 值为6.
2、代码中
for(int i=yyao.length;i>-1;i--){
System.out.println(yyao+",");//下表最大到5,这里越界了。
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2