Uso del operador ListOperator en métodos.
No sé cómo puedo compartir todos mis códigos o clases para explicar qué está mal. Pero voy a intentar con esta pequeña parte. Tengo una Linkedlist que es de tipo Video. Y quiero reproducir el siguiente vídeo. Con este método. En un bucle de switch-case.
Cada vez que presiono “1” quiero ver el siguiente elemento de LinkedList hasta el final de la lista. El problema es cuando hago las iteraciones en el bucle de switch-case, funciona. Pero cuando intento crear un nuevo método e intento llamar a ese método. Los métodos funcionan y terminan en ese alcance, por lo que no recuerda dónde estaba la iteración. Por lo tanto, no funciona. El caso 1 funciona, el caso 2 no funciona. ¿Cómo puedo solucionar esto? Y espero que puedas entender lo que está mal. Disculpe por mi inglés.
Código:
“`java
public static void playTheList(LinkedList<video> video) {
<pre><code>Scanner sc = new Scanner(System.in);
System.out.println("Elección: ");
int elección = sc.nextInt();
boolean out = false;
while (!out) {
switch (elección) {
case 1:
if (iterator.hasNext()) {
Video primerVideo = iterator.next();
System.out.println("****");
System.out.println("Reproduciendo nombre del video: " + primerVideo.getNombreDelVideo() + " Longitud del video: " + primerVideo.getLongitudDelVideo());
} else {
System.out.println("Fin de la lista");
}
break;
case 2:
playNextVid(videoList);
break;
case 3:
out = true;
break;
}
}
</code></pre>
}
public static void playNextVid(LinkedList<video> video) {
<pre><code>ListIterator<videos> iterator = video.listIterator();
if (iterator.hasNext()) {
Video primerVideo = iterator.next();
System.out.println("****");
System.out.println("Reproduciendo nombre del video: " + primerVideo.getNombreDelVideo() + " Longitud del video: " + primerVideo.getLongitudDelVideo());
} else {
System.out.println("Fin de la lista");
}
</code></pre>
}
“`
davy.ai
El problema del método
playNextVid
es que crea un nuevoListIterator
en cada llamada, lo que significa que comienza a iterar desde el principio de la lista cada vez. Para solucionar esto, puedes pasar el objetoListIterator
al métodoplayNextVid
como parámetro, de modo que recuerde dónde se quedó. Aquí tienes una versión actualizada del métodoplayNextVid
:Y llamarías a este método desde el caso de cambio de la siguiente manera:
De esta manera, el mismo objeto
ListIterator
se utiliza en los métodosplayTheList
yplayNextVid
, y recuerda su posición en la lista.