A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liqi 中级黑马   /  2014-9-4 07:45  /  1399 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个方法是对传入的集合元素进行删除操作,为什么不能删除,集合的长度永远不变
public static List<Person> deLis(List<Person> arrs){
                LinkedList<Person> arrs2 = new LinkedList<Person>();
                int count = 0;
                int number = 0;
            int len = arrs.size();
                while(len>1)
                {
                    len = arrs.size();
                        System.out.println(len);
                    for(int x=0;x<len;x++){
                      count = count+1 ;
                      if(count%14==0){
                               
                                arrs2.add(arrs.get(x));
                                number = number++;
                                }
                      }
                    for(int y=0;y<number;y++){
                            arrs.remove(arrs2.removeLast());
                      }
                    
                }
               
                return arrs;
                    
        }

7 个回复

倒序浏览
while(len>1)   这个len  你都没改过吧....
回复 使用道具 举报
谢建平 发表于 2014-9-4 10:33
while(len>1)   这个len  你都没改过吧....

谢谢,已经解决了。错的地方在两个自增的地方
你的意思是 最后剩下的在 1~13 之间吧,不会出现这种情况的,因为如果>1, 会继续循环,而count会在上一次循环的基础上自增,所以就算只有两个数,也会自增到14的倍数
回复 使用道具 举报
100个人算剩下的最后一个人的那个 ?     
回复 使用道具 举报
liqi 发表于 2014-9-4 10:55
谢谢,已经解决了。错的地方在两个自增的地方
你的意思是 最后剩下的在 1~13 之间吧,不会出现这种情况的 ...

你一说我想起来了... number = number++;  这种有问题    没变 ..0.0
回复 使用道具 举报
还有1到13    比如当len为3时 你的x只要自加三次就大于len了  count来不及加下次到14的倍数循环条件就不成立了吧。
回复 使用道具 举报
liqi 中级黑马 2014-9-4 16:20:02
7#
王凯路路 发表于 2014-9-4 11:37
100个人算剩下的最后一个人的那个 ?

恩  是的,我++写在后面了,count一直是零,改到前面就好了
回复 使用道具 举报
liqi 中级黑马 2014-9-4 16:22:11
8#
谢建平 发表于 2014-9-4 15:47
还有1到13    比如当len为3时 你的x只要自加三次就大于len了  count来不及加下次到14的倍数循环条件就不成 ...

错误已经找出来了,我原代码是 count= count++;  因为一直是零 ,所以改成count= count+1,
应该改为 ++count,就好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马