Hola Chompy129:
He estado analizando tu código y lo veo muy bien, felicitaciones.
Y aprovechando que está muy bien y no veo necesidad de hacer correcciones importantes, sí me gustaría aportar otra forma de codificar la clase 'TestListaCantantesFamoso'.
En esta versión alternativa, introduzco algunos cambios para que los analices y veas si te parecen bien:
1) se ahorra un campo de instancia (boolean inicial), y se resuelve de otra manera aquello para lo cual estaba pensado originalmente.
2) Se cambia la condición while(true) por una solución más elegante, sin tener que salirse del bucle utilizando 'break'.
3) Se crea el método mostrarListaCompleta, que además de ser retulizable dentro de la clase, hace más legible el método main.
4) Se muestra la lista completa por pantalla la primera vez, y cada vez que ingresamos un nuevo cantante. Esa es la manera en que debe proceder nuestro programa (fijarse en el ejemplo de la descripción del ejercicio).
import java.util.Iterator;
import java.util.Scanner;
/**
* Este método main testea el funcionamiento de ListaCantantesFamoso.
* Hace uso de variables tipo Iterator.
* @author Chompy129
* @version 1.0
*/
public class TestListaCantantesFamoso{
public static void main(String[] args){
Scanner entradaS= new Scanner(System.in);
ListaCantantesFamoso lista= new ListaCantantesFamoso();
lista.anadirCantante("Michael Jackson", "Thriller");
lista.anadirCantante("Madonna", "All I want is you");
String nombreNuevo= "";
String discoMasVendidoNuevo= "";
System.out.println("La lista inicial contiene los siguientes datos:");
mostrarListaCompleta(lista.getLista().iterator());
String m= "s";
while(m.equalsIgnoreCase("s")){
System.out.println("Añada un nuevo cantante:");
System.out.print("- Nombre: ");
nombreNuevo= entradaS.nextLine();
System.out.print("- Disco con mas ventas: ");
discoMasVendidoNuevo= entradaS.nextLine();
lista.anadirCantante(nombreNuevo, discoMasVendidoNuevo);
System.out.println("La lista actualizada contiene los siguientes datos:");
mostrarListaCompleta(lista.getLista().iterator());
System.out.println("¿Desea introducir un nuevo cantante (s/n)?");
m= entradaS.nextLine();
}
System.out.println("Hasta luego.");
}//Cierre de método main.
private static void mostrarListaCompleta(Iterator<CantanteFamoso> it){
CantanteFamoso next;
while(it.hasNext()){
next= it.next();
System.out.print("Cantante: " + next.getNombre() + ".");
System.out.println(" Disco con más ventas: " + next.getDiscoConMasVentas() + ".");
}
}
} // fin de la clase.
Analízalo y cualquier duda estamos aquí para revisarlo nuevamente.