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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 明光照 中级黑马   /  2012-9-20 19:00  /  3383 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 明光照 于 2012-9-22 21:59 编辑

public class TestFor {
        public static void main(String args[]){
                int array[]={12,1,15,21,32,24};
                for(int i:array){
                        System.out.println(array);//为什么这样的形式就会报错?
                        System.out.println(i);
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 新手鼓励!!!

查看全部评分

11 个回复

倒序浏览
for(int i: array)
这里i 对应的是值啊,array[i],里的 i 只能是角标。你打印的是array[12],array[1],array[15]...
for(int i=0;i<array.length;i++)
这里array[i]就可以了。
如果打印i,就是0,1,2,3,4,5了
回复 使用道具 举报
public class TestFor
{
        public static void main(String args[])
           {
                int array[]={12,1,15,21,32,24};
                for(int i:array)
                      {
                        System.out.println(array[i]);          //为什么这样的形式就会报错?
System.out.println(i);
                      }
          }
}
因为你写的增强for 语句是 for(int i:array)  意思是通过int  i  来遍历该array数组中的元素
System.out.println(array[i]); 你这里写的意思是依次打印array[0], array[1], array[2], array[3] ...
System.out.println(i);则符合 for(int i : arrary)  的语句





回复 使用道具 举报
严海荣 发表于 2012-9-20 19:10
for(int i: array)
这里i 对应的是值啊,array,里的 i 只能是角标。你打印的是array[12],array[1],array[15 ...

for(int i:array){
                        System.out.println(array);//为什么这样的形式就会报错?
                        System.out.println(i);
}
在这个代码中i已经是你从数组中要取的元素了,就和集合的超级for循环是一样的
List<String> l=new ArrayList<String>();
for(iString  str :l){//我们已经知道了集合中存储的String  所以就不需要写Object了
              System.out.println(str);}
超级和一般的区别就在这里一般的是你所写的那样
int[] arr=new [12];
for(int x=0;x<arr.length;x++)
{System.out.println(arr[x]);}

回复 使用道具 举报
在这个代码中i已经是你从数组中要取的元素了,就和集合的超级for循环是一样的
List<String> l=new ArrayList<String>();
for(iString  str :l){//我们已经知道了集合中存储的String  所以就不需要写Object了
              System.out.println(str);}
超级和一般的区别就在这里一般的是你所写的那样
int[] arr=new [12];
for(int x=0;x<arr.length;x++)
{System.out.println(arr[x]);}
回复 使用道具 举报
“for(int i:array){”  那个i已经是array数组遍历出来的整型数字了, 可能写成array[i]肯定会错啊。 楼主,你可能把i理解成数组的下标了。 如果你真想得到数组下标就定义局部变量。这样做:
int index = 0;
for(int i:array){
                                    System.out.println(array[index]);//为什么这样的形式就会报错?
                        System.out.println(i);
  
                }
回复 使用道具 举报
“for(int i:array){”  那个i已经是array数组遍历出来的整型数字了, 可能写成array[i]肯定会错啊。 楼主,你可能把i理解成数组的下标了。 如果你真想得到数组下标就定义局部变量。这样做:
int index = 0;
for(int i:array){
                                    System.out.println(array[index]);//为什么这样的形式就会报错?
                        System.out.println(i);
                                    index++;
                }
回复 使用道具 举报


public class TestFor {
        public static void main(String args[]){
                int array[]={12,1,15,21,32,24};
                for(int i:array){  //你这里面的i是一个临时变量,用来存放每次遍历到的元素,并不是数组array的角标
                        System.out.println(array);//为什么这样的形式就会报错?
                        System.out.println(i);
                }
        }
}

回复 使用道具 举报
public class TestFor {
        public static void main(String args[]){
                int array[]={12,1,15,21,32,24};
                for(int i:array){
                        System.out.println(array[i]);//为什么这样的形式就会报错?
                        System.out.println(i);
                }
        }
}

这里涉及到一个增强型for循环的知识

语句格式:for(元素类型t 元素变量x : 遍历对象obj){
     引用了x的java语句;
              }

在遍历数组、集合方面很便捷,避免了出现角标越界的缺点。

里边的 i 不是角标,而是元素,要是使用arr[i];  就是会报错,
角标越界。
回复 使用道具 举报
增强型for循环是不用角标就可以访问的  应该 System.out.println(i); 可以把Array数组中的元素都打印出来。
如果你的语句里面要用到角标,建议使用普通for循环。
另外你要打印出数组的话也可以用工具类Arrays下面的static String toString(int[] a)静态方法。
Arrays.toString(array);
回复 使用道具 举报
i不是下标是数组中的元素,array[i]报错是数组越界吧,你再看看,好好理解下吧
回复 使用道具 举报
增强for循环语法格式:
for(变量修饰符 变量类型 引用:要遍历的集合或者数组的具体对象)
{
    //具体操作。
}
切记重点:对于集合 或者 数组  增强for循环 把遍历的功能函数已经封装进去了。
你所说的 i 是具体的 int类型的值 而不是角标 。所以 你这样写 arr[i]就是语法错误。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马