黑马程序员技术交流社区
标题:
匿名数组重新初始化出现问题了,怎么回事啊?? 听说标...
[打印本页]
作者:
罗安迪
时间:
2014-3-4 16:37
标题:
匿名数组重新初始化出现问题了,怎么回事啊?? 听说标...
本帖最后由 罗安迪 于 2014-3-5 00:03 编辑
**
*初始化一个数组:int[] b = {1,2,3,4,5,6};
* 书中说 可以初始化一个匿名数组:new int[]{1,6,4,2,7,4};
*并且可以用这种形式在不创建新变量情况下重新初始化一个数组:b = new int[]{1,6,4,2,7,4};
* @author Administrator
*
*/
public class InputTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建数组并初始化
int[] b ={1,5,2,7,4,8};
//用匿名数组重新初始化
b = new int[]{1,3,2,1,4,9};
for(int x: b)
System.out.println(b[x]);
}
}
复制代码
可是在console 出现的是:
3
1
2
3
4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at InputTest.main(InputTest.java:21)
明明都是6个元素啊? 问题出在哪呢?
作者:
q527198615
时间:
2014-3-4 16:59
亲,你用for加强遍历了数组b,当x=数组最后一个值9的时候就超出了数组界限了哦!!!你的愿意应该是把重新初始化的数组打印出来,而你用的for加强循坏,得到的x是1,3,2,1,4,9。所以b[9]没有吧!
作者:
无道
时间:
2014-3-4 21:05
高级for中的x不是数组b的角标,,x是数组中的元素的值。
作者:
wxk105
时间:
2014-3-5 10:49
楼主要想打印出数组中的各个元素,建议还是按部就班来:
for(int x=0;x<b.length;x++)
System.out.println(b[x]);
作者:
水蓝
时间:
2014-3-13 00:14
楼主这是把数组中元素的值,当数组下标来处理了。
第23行:System.out.println(b[x]);
应该改成:
System.out.println(x);
因为:
for(int x: b)
这个里面的x,其实就是代表的数组中的元素,而不是数字下标。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2