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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 罗安迪 于 2014-3-5 00:03 编辑
  1. **
  2. *初始化一个数组:int[] b = {1,2,3,4,5,6};
  3. * 书中说 可以初始化一个匿名数组:new int[]{1,6,4,2,7,4};
  4. *并且可以用这种形式在不创建新变量情况下重新初始化一个数组:b = new int[]{1,6,4,2,7,4};
  5. * @author Administrator
  6. *
  7. */

  8. public class InputTest {

  9.         /**
  10.          * @param args
  11.          */
  12.         public static void main(String[] args) {
  13.                 // TODO Auto-generated method stub
  14.                
  15.                         //创建数组并初始化
  16.                         int[] b ={1,5,2,7,4,8};
  17.                         //用匿名数组重新初始化
  18.                         b = new int[]{1,3,2,1,4,9};
  19.                         
  20.                         for(int x: b)
  21.                         System.out.println(b[x]);                                       
  22.         }

  23. }
复制代码


可是在console 出现的是:
3
1
2
3
4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
        at InputTest.main(InputTest.java:21)

明明都是6个元素啊? 问题出在哪呢?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

4 个回复

正序浏览
楼主这是把数组中元素的值,当数组下标来处理了。
第23行:System.out.println(b[x]);   
应该改成:
System.out.println(x);

因为:
for(int x: b)
这个里面的x,其实就是代表的数组中的元素,而不是数字下标。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
楼主要想打印出数组中的各个元素,建议还是按部就班来:
                       for(int x=0;x<b.length;x++)
                        System.out.println(b[x]);   
回复 使用道具 举报
高级for中的x不是数组b的角标,,x是数组中的元素的值。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
亲,你用for加强遍历了数组b,当x=数组最后一个值9的时候就超出了数组界限了哦!!!你的愿意应该是把重新初始化的数组打印出来,而你用的for加强循坏,得到的x是1,3,2,1,4,9。所以b[9]没有吧!

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

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