for(int n=0;n<doctorWatchList.size();n++){
       ZBJLBEO zb=(ZBJLBEO)doctorWatchList.get(n);
       ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
        if(zb.getCWYNAME().equals(zb2.getCWYNAME())&&zb.getHEALTH_REPORT().equals(zb2.getHEALTH_REPORT())){
       doctorWatchList.remove(n);
       }
      }在ACTION里执行两三遍就会出错????请问怎么解决??

解决方案 »

  1.   

     是不是这句话有错误啊ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
    当你走到最后一个得时候,你的(n+1)就超过了list的长度了
      

  2.   

    当n=size()-1时,n+1=size()了,doctorWatchList中没有这个索引,越界了。
      

  3.   

    楼上有理    对arraylist循环    ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
    到最后一条肯定会报错     
      

  4.   

    就是n+1的地方出错了。n+1超过doctorWatchList.size()的长度了。
      

  5.   

    怎么这样做呢,用遍历不好吗?
    Iterator it = doctorWatchList.iterator();
    for(Iterator it=doctorWatchList.iterator();it.next();)
      

  6.   

    嗯,是N+1的问题不好意思啊到头了是我算错了,呵后来我改成:for(int n=0;n<doctorWatchList.size();n++){
           System.out.println("nnn:"+n+"     size:"+doctorWatchList.size());
           ZBJLBEO zb=(ZBJLBEO)doctorWatchList.get(n);
           if(n==doctorWatchList.size()){break;}
           ZBJLBEO zb2=(ZBJLBEO)doctorWatchList.get(n+1);
           System.out.println("n:"+n+"size:"+doctorWatchList.size());
           if(zb.getCWYNAME().equals(zb2.getCWYNAME())&&zb.getHEALTH_REPORT().equals(zb2.getHEALTH_REPORT())){
           doctorWatchList.remove(n);
           n--;
           }
          }输出:
    n:0     size:7
    n:0     size:6
    n:0     size:5
    n:0     size:4
    n:0     size:3
    n:0     size:2
    n:0     size:1才明白怎么回事,呵呵,谢谢大家了,笨了。