Java中利用集合实现约瑟夫问题
答案:2 悬赏:80 手机版
解决时间 2021-03-26 09:08
- 提问者网友:寂寞梧桐
- 2021-03-26 02:44
Java中利用集合实现约瑟夫问题
最佳答案
- 五星知识达人网友:深街酒徒
- 2021-03-26 02:54
你的iter=all.iterator();这句后少了iter.next(); 如果不指向一个元素那你的iter.remove(); 就不知道要删除那个元素了,所以获取新迭代器后要用next方法指定删除的是哪个,否则会抛出异常的。
for(int i=0;i<3;i++){
if(iter.hasNext())
iter.next();
else{
iter=all.iterator();
iter.next();
}
}追问添加这句之后 1被删除了 但是之后又抛出NoSuchElementException异常不知道为什么
for(int i=0;i<3;i++){
if(iter.hasNext())
iter.next();
else{
iter=all.iterator();
iter.next();
}
}追问添加这句之后 1被删除了 但是之后又抛出NoSuchElementException异常不知道为什么
全部回答
- 1楼网友:怀裏藏嬌
- 2021-03-26 03:38
迭代器的模型实际上是链表,没有首尾相连,这样无法模拟约瑟夫环,remove报错就是因为迭代器的游标走到结尾了追问iter=all.iterator(); 这句不能实现迭代器的遍历从头开始吗追答可以,你代码稍微改改就可以完整实现环了,重置迭代器之后是不能直接remove的,这时候游标还在开头,没指向任何元素
remove时也要判断迭代器的状态追问上面回复已经实现 应该是可以的了
非常感谢!!!!
remove时也要判断迭代器的状态追问上面回复已经实现 应该是可以的了
非常感谢!!!!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯