Buenas Ramon, la clase EntradaDeTeclado, la veo bien, quizá yo el String entradaTeclado, lo cambiaria por otro nombre que no coincida tanto con la clase, nuevaEntrada o algo así. Pero OK. Y la función buscarCantante() si crea un cantante, seria mejor crearCantante o añadirCantante, porque buscar al leer el codigo induciria a error, sobre lo que realmente hace, que es recojer por teclado un nombre.
Clase para agregar nuevo cantante al ArrayList esta bien todo, el constructor que le pasa una lista, no lo usas para nada, pero esta bien, lo que no le veo logica (si lo pide el ejercicio no he dicho nada) que le pasas el array de nombres, y un nombre a parte,
public ListaCantantesFamosos(ArrayList<String> cantantes, String nombreCantante) {
this.cantantes = cantantes;
this.nombreCantante = nombreCantante;
}
En ese caso con pasarlo todo en el arrayList cantantes, ya estaria.
La clase principal bien, esta bien todo solo son detalles. Si quieres por comentarte algo de esta, creas dos nuevos objetos de entrada de datos, cuando quizás con uno solo bastaria, una vez has recogido el nombre del primer cantante puedes volver a llamar al mismo objeto entrada1 para recoger el segundo cantante.
sigue así.