因此,我制作了一个DiceCollection类,该类实现了Iterator及其类。在进行单元测试时,我的next()方法似乎并没有增加我的索引,而且我不确定这背后的原因是什么。
public class DiceCollection implements Iterator<De> {
public int position = 0;
public int endPosition = 3;
private De[] diceList;
@Override
public boolean hasNext() {
return position < endPosition;
}
@Override
public De next() {
De de = diceList[position];
position++;
return de;
}
}
现在,当调用next()方法时,我的位置索引保持不变:
Iterator<De> iter = des.creerIterateur();
System.out.println(iter.hasNext());
System.out.println(des.position + "/" + des.endPosition);
System.out.println(iter.next());
System.out.println(des.position + "/" + des.endPosition);
System.out.println(iter.hasNext());
System.out.println(iter.next());
System.out.println(des.position + "/" + des.endPosition);
System.out.println(iter.hasNext());
System.out.println(iter.next());
System.out.println(iter.hasNext());
System.out.println(iter.next()); //null
我得到以下输出:
true
0/3
De [valeur=0, nbFaces=6]
0/3
true
De [valeur=0, nbFaces=8]
0/3
true
De [valeur=0, nbFaces=10]
true
null
问题来源:Stack Overflow
您在打印des对象的position属性时正在iter对象上调用next()方法。调用next()时,iter对象的position属性改变,而des.position属性不变。
System.out.println(des.next());
System.out.println(des.position + "/" + des.endPosition);
应该打印正确的值
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。