cai772088996 2015-12-23 16:18 采纳率: 100%
浏览 1715
已采纳

JAVA小白问题:测试Iterable接口的Iterator迭代器方法时遇到的疑问

图片说明

创建个Arraylist集合,放几个数据,然后用迭代器循环遍历,同时想做个判断,如果等于指定的数值的数据出现了,就删除它,继续迭代别的元素,单独用remove删除方法没问题,但把它和next方法合起来用,就报错了,求解,谢谢!

  • 写回答

6条回答 默认 最新

  • 月苍 2015-12-24 00:34
    关注

    既然你自己也标注了正确的和错误的,我给你提一下,你这里有三个点:

    分别是,it.hasnext(),第一个it.next(),第二个next.

    先解释一下it.hasnext()的意思:如果迭代器有下一个元素(并不会获取,只是告诉你有没有)。it.next():**获取**下一个元素。(_你就是错在这_)
    那么现在顺着这两个意思,你的思路跟着走一边,就很清晰了。
    你第一次走的流程:while(it.hasnext(有没有1?)),it.next(拿到1),it.next(拿到2);
    你第二次走的流程:while(it.hasnext(有没有3?)),it.next(拿到3),it.next(拿到4);
    你第三次走的流程:while(it.hasnext(有没有5?)),it.next(拿到5),it.next(拿到6);
    ......
    ......
    你最后一次走的流程:while(it.hasnext(有没有49?)),it.next(拿到50),it.next(**拿到51**);
    然后最后一次就出问题了。 你有51吗?很明显,你自己定义的就是50,所以没有。然后。报错
    所以,结果就是这样,你在调用一个方法时,应该明白这个方法的含义,这样能减少你的BUG

    至于你正确的,我就不赘述了,你可以自己跟着思考一边,为什么它不会报错。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮