gpt4 book ai didi

java - 实现迭代器时索引不递增

转载 作者:行者123 更新时间:2023-12-01 19:28:24 24 4
gpt4 key购买 nike

所以我创建了一个 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

最佳答案

您正在调用 iter 对象的 next() 方法,同时打印 des 对象的位置属性。调用next()时,iter对象的position属性发生变化,但des.position属性不变。

System.out.println(des.next());
System.out.println(des.position + "/" + des.endPosition);

应该打印正确的值。

关于java - 实现迭代器时索引不递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60663398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com