Buenos días.
Tratando de hacer el ejercicio de la entrega CU00666B del curso básico de Java de aprender a programar, me ha surgido un problema con el for extendido. Cuando compilo la clase, me aparece el siguiente mensaje: "for-each not applicable to expression type required: array or java.lang.Iterable; found: ListaCantantesFamosos".
Esta es la parte que me da error:
public static void main (String []args) {
ListaCantantesFamosos prueba = new ListaCantantesFamosos();
int i=0;
System.out.println ("Esta es la lista que tenemos por ahora:");
for (String z:prueba) {
System.out.println ((i+1) + ".- " + z);
i++;
}
Esta es la clase completa.
public class TestCantantes2 {
public static void main (String []args) {
ListaCantantesFamosos prueba = new ListaCantantesFamosos();
int i=0;
System.out.println ("Esta es la lista que tenemos por ahora:");
for (String z:prueba) {
System.out.println ((i+1) + ".- " + z);
i++;
}
System.out.println ("Introduce un nuevo cantante.");
EntradaDeTeclado entrada1 = new EntradaDeTeclado();
prueba.addCantante(entrada1.getEntrada());
System.out.println ("Has introducido al cantante " + prueba.getCantante((prueba.getTamaño())-1) + ".");
System.out.println ("Esta es la lista que tenemos por ahora:");
i=0;
for (String z:prueba) {
System.out.println ((i+1) + ".- " + z);
i++;
}
while (true) {
System.out.println ("¿Quieres introducir más cantantes? Si quieres salir del programa, escribe No. Si quieres continuar, introduce el nombre de un cantante");
EntradaDeTeclado j= new EntradaDeTeclado();
prueba.addCantante(j.getEntrada());
if((j.getEntrada()).equalsIgnoreCase("No")) {break;}
System.out.println ("Esta es la lista que tenemos por ahora:");
i=0;
for (String z:prueba) {
System.out.println ((i+1) + ".- " + z);
i++;
}
;
}
}
}
Por si fuera necesaria, dejo también aquí la clase ListaCantantesFamosos.
import java.util.ArrayList;
public class ListaCantantesFamosos {
public ArrayList<String> listacantantes;
//Constructor.
public ListaCantantesFamosos () {
listacantantes= new ArrayList<String>();
listacantantes.add ("Harry");
listacantantes.add("Hermione");
listacantantes.add("Ron");
}
//Método para añadir mas cantantes.
public void addCantante (String cantante) { listacantantes.add(cantante);}
public int getTamaño () { return listacantantes.size();}
public String getCantante (int posicion) {
if (posicion>=0&&posicion<listacantantes.size()) {
return listacantantes.get(posicion);
} else {return "No hay tantos cantantes, tío.";}
}
}
Cuando elimino los for extendidos, el código parece funcionar correctamente. ¿Alguien sabe dónde está el error?
Muchas gracias de antemano.