首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

关于 Vector 求解解决思路

2012-01-26 
关于 Vector 求解我定义了2个 vectorv1,v2v1存放 圆,v2存放 方块, 圆有个碰撞的 方法hit(int x,int y,int

关于 Vector 求解
我定义了2个 vector v1,v2;
v1存放 圆,v2存放 方块, 圆有个碰撞的 方法 hit(int x,int y,int x1,int y1)
  然后 进行双循环。
for(int i = 0 ; i < v1.size(); i ++ ){
  for(int j = 0 ; j < v2.size(); j ++){
  if(v1.elementAt(i).hit(v1.elementAt(i).x,v1.elementAt(i).y,v2.elementAt(j).x,v2.elementAt(j).y)){
  v1.remove(i); // 碰撞到了 就进行删除的操作!
  v2.remove(j);
  }
 }
}
大概就是这样的,但是 经常会报数组越界的错误, 0>=0 啊,1>=1 这样。让我烦恼不已。
按理说 vector 是线程同步的,怎么会越界呢?
求高手指教!
小弟感激不尽!


[解决办法]
请用Iterator遍历,然后用iterator.remove进行删除
[解决办法]
你连着两个remove,第二次remove的参数不能保证在合法的index范围内了
[解决办法]
remove()之后,i--, j--
[解决办法]
v1.remove(i);会影响到v1.size()和v1的排列,这个时候遍历v1就出问题了,
v2也有一样的问题,
我觉得越界应该出在v1上面,因为remove()之后i<v1.size()不会马上判断,而事实上v1.size()变小了
加i--,j--

热点排行