Hola matru
Sobre el ejercicio en la clase EntradaDeTeclado tienes algún código sobrante, por ejemplo la parte de System.out.println("Mira esto: " + entradaTeclado.substring(0,1));
Aunque ese código no afecte debes intentar tener sólo el código necesario
En los for extendido tienes algo mal:
for(String nombre: list.getListaCantantes() ){
System.out.println(nombre);
i++; }
En un for extendido no es necesario llevar una variable de control i e ir haciendo i++. El control del recorrido de elementos lo hace automáticamente Java.
En el main tienes código que no está bien planteado, por ejemplo:
if(desicion.equalsIgnoreCase("Si")){
i++; }else if(desicion.equalsIgnoreCase("No")){
System.out.println("Gracias!");
break; }
En este condicional hacer i++ no tiene ninguna utilidad. Por otro lado en caso de el usuario elegir No se sale con un break del bucle. Esto no es recomendable. La salida de un bucle while debe hacerse a través de la condición del while.
Es conveniente que repitas el ejercicio
Consulta si quieres otros hilos como
https://www.aprenderaprogramar.com/foros/index.php?topic=2262.0 para ver cómo lo han resuelto otros compañeros y luego intenta hacerlo solo
Otro hilo interesante que comenta el break en bucles:
https://www.aprenderaprogramar.com/foros/index.php?topic=2570.0Saludos