Índice de no incrementar al implementar un iterador

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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=280313&siteId=1
Recomendado
Clasificación