日期:2014-05-19  浏览次数:20660 次

java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
如下面程序所示,tc是一个对象,包含state、ID和position三个属性,当我有一个新的tc时,我想根据tc的ID来将它存入arrayList对应的位置,为什么一运行就出错?各位大侠,请帮帮我吧!
if(tc.getTC_ID().substring(3, 4).equals("0")){
String ID = tc.getTC_ID();
if(ID.equals("1000")){
tcListleft.add(0,tc);
System.out.println("tcListleft 0:"+tcListleft.get(0).TC_ID);
}
if(ID.equals("2000")){
tcListleft.add(1,tc);
System.out.println("tcListleft 1:"+tcListleft.get(1).TC_ID);
}
if(ID.equals("3000")){
tcListleft.add(2,tc);
System.out.println("tcListleft 2:"+tcListleft.get(2).TC_ID);
}
if(ID.equals("4000")){
tcListleft.add(3,tc);
System.out.println("tcListleft 3:"+tcListleft.get(3).TC_ID);
}
if(ID.equals("5000")){
tcListleft.add(4,tc);
System.out.println("tcListleft 4:"+tcListleft.get(4).TC_ID);
}
} }
}

------解决方案--------------------
tc只是一个对象

比如是满足ID.equals("2000")

那么tcListleft.add(1,tc); 之后,tcListleft也只是容量为1

tcListleft.get(1)就数组越界了。容量为1,怎么能取到get(1)的值呢?
------解决方案--------------------
4个if只能进一个。所以list里就只能一个元素
------解决方案--------------------
4个if只有一个城里,所有List里面只有一个元素,所以只能list.get(0);