idiosincrasias:
Así que hice una DiceCollection clase que implementa un iterador y sus clases. Mientras que hace las pruebas de unidad, no parece que mi método next () para incrementar mi índice, y no estoy seguro de cuál es la razón detrás de eso.
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;
}
}
Ahora cuando se llama al método next (), mi índice de posición sigue siendo la misma:
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
Consigo esta salida:
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
Jyrjyrjy:
Que está llamando al método next () en el objeto iter mientras se imprime el atributo posición del des objeto. Cuando se llama a next (), el atributo posición del objeto iter cambia, pero no el atributo des.position.
System.out.println(des.next());
System.out.println(des.position + "/" + des.endPosition);
Debe imprimir los valores correctos.