Vector v=new Vector();
v.add("1");
v.add("2");
v.add("0");
v.add("0");
v.add("0");
v.add("0");
v.add("3");
v.add("4");
v.add("5");
for(int i=0;i<v.size();i++){
   if(v.get(i)==0){
      v.remove(i);
   }
}
运行结果为什么还会有几个"0"值没删除呢??

解决方案 »

  1.   

    你把v.get(i)=="0"改成"0".equals(v.get(i))看看还有没有问题。
    字符串直接相等是不能判断里面内容是否相同的。
      

  2.   

    问题出在Vector是remove(i)后i后面的元素自动后移所以有些就没有读取到
    for(int i=0;i<v.size();i++){
       if(v.get(i)==0){
          v.remove(i);
          i--;
        }
    }
    这样就可以了
    自己体会一下
      

  3.   

    remove掉第一个0,i++,i就变成3,而本来在3的0向前移动,变成了2,那这个你就跳过了
      

  4.   

    interpb(曾曾胡) 
    同意楼上的说法,当你remove掉一个0的时候。你指针实际的位置是往后去了一个,但是你删除那位的后一位实际上已经补齐了你删掉的那一位。。所有补齐的那位如果是0。你就错过了