日期:2014-05-18  浏览次数:20703 次

急急急。。。java代码报错。。。大神请详解,赐教啦~


package com.zao;

import java.util.ArrayList;

public class Core1 {
private String xingming;
private String lll;
private String mmm;

public Core1(String a, String b, String c) {
xingming = a;
lll = b;
mmm = c;
}
public String getXingming(){
return xingming;
}public String getLLL(){
return lll;
}public String getmmm(){
return mmm;
}public Core1(){}
public static void main(String[] args) {
ArrayList c = new ArrayList();
System.out.println("" + c.size());
Core1 b = new Core1("孙悟空", "2", "4");
Core1 b2 = new Core1("沙僧","2","sd");
Core1 b3 = new Core1("八戒","2s","360");
c.add(b);
c.add(b2);
c.add(b3);
System.out.println("大小为:" + c.size());
for (int i = 0; i <= c.size(); i++) {
Core1 f = (Core1) c.get(i);
System.out.println("第" + (i + 1) + "个学生的姓名字是" + f.getXingming());
}

}

}
结果显示:0
大小为:2
第1个学生的姓名字是孙悟空
第2个学生的姓名字是沙僧
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at com.zao.Core1.main(Core1.java:33)
可以从运行结果看出,输出了2个人的信息,可是那个“0”是怎么来的??后面的异常又出现在哪里??是越界吗?没有啊   。。。。

------解决方案--------------------
System.out.println("" + c.size()); 你还没有想容器里面存放数据,打印出来肯定是0。
for (int i = 0; i <= c.size(); i++) ,越界了,改成i<c.size()。另外你这个输出应该是三行。
------解决方案--------------------
c.size()的值为3,如果从0开始,那么只能取到0,1,2,而3越界了