Hola Luis.
Supongo que ya sabes que este programa no funciona porque no creo que ningún compilador lo haya dado por bueno.
Vamos por partes
Sobre los atributos, a parte del ArrayList has incluido un String para el nombre de la lista.
Este atributo no se pide en el enunciado del ejercicio y no es necesario crearlo. Si quieres añadirlo tú, por voluntad propia, pues bueno... pero sobre todo que tengas claro que no es necesario para este ejercicio.
Podría ser útil en otra situación, por ejemplo un programa que gestionase varias listas de cantantes, entonces si sería útil un atributo que las identificase para distinguirse unas de otras.
Sobre el constructor...la tercera línea donde llamas al método .size(), además de erronea (no existe el atributo
listadenombresList) es innecesaria.
Primero porque si la lista está recien inicializada, su size (tamaño) es obviamente "cero" elementos.
Sea cero o no, en ese momento no necesitamos saber su size().
Y además, tal y como llamas al método, te está devolviendo un valor que no estás recogiendo en ningún sitio, con lo cuál, ese valor desaparece en la siguiente línea.
Este metodo tiene sentido llamarlo en un bucle, en un if o bien guardando su valor en una variable de tipo int, por ejemplo:
int tamanoLista = listadenombres.size();
Así que no es necesaria esa tercera línea del constructor.
Por cierto, aunque a muchos compiladores les dará igual y como mucho se quejarán un poquito..., acostumbrate a usar las convenciones Java a la hora de poner nombres a variables y clases.
Es de uso y costumbre usar la notacíon
CamelCase, es decir, los nombres de variables o clases compuestas de varias palabras, cada palabra se distingue de la otra poniendo la primera letra en mayúsculas.
Esto es así tanto para las clases como para las variables (lo cual incluye a objetos y atributos de clases, que son en realidad variables)
La diferencia es que las clases empiezan por mayusculas y las variables en minuscula, aunque el resto de palabras que componen el nombre si empiezan en mayúscula.
Ejemplo.
Nombre de clase --->
Esto
Es
Una
Clase
Nombre de variable, atributo u objeto ---->
esto
Es
Una
Variable
Se desaconseja usar abreviaturas o guiones bajos para separar palabras, por ejemplo:
lista_de_nombres;
Este tipo de notación si se usa en C/C++, pero no es costumbre usarla en Java...aunque funcionar, funcionará...
Siguiendo con el constructor, fíjate que el enunciado indica que al inicializarse el objeto de la clase ListaCantantesFamosos, ya ha de incluir tres nombres
(Miguel Bose, Rafael, Juanes).Esto pues, ha de realizarse también en el constructor.
Es decir, después de la segunda línea donde incializar el ArrayList, deberías incluir tres líneas más, cada una llamando al método
.add("nombre de un famoso"); para incluir esos tres nombres que solicita el enunciado.
También puedes inicializar el ArrayList pasandole a su constructor un Collection que contenga esos tres nombres.
Ver documentacion Java.Pero ahora no vale la pena complicarse la vida con esto.
Vale, terminado el constructor, hay
que pensar que métodos necesitará la clase ListaCantantesFamosos para cumplir lo que se nos pide en el enunciado.
Tu
método para añadir un nuevo nombre a la lista es correcto y no necesita ser modificado. (excepto lo de usar la notación CamelCase que es estila en Java)
El enunciado además pide que, tras añadir dos nombres más a la lista,
se muestre un listado con todos lo nombres.Tú has hecho una movida rara dentro del main()..

creando un nuevo objeto Listadenombres lista1...el cuál es imposible porque listanombres es un atributo de la clase ListaCantantesFamosos, no es una clase con la que poder crear nuevos objetos.
Luego veo objetos entrada1, entrada2, entrada3.. que no se sabe de donde salen...y que poseen un supuesto método getEntrada()...
Así que olvida todo eso que has hecho. Lo ideal es crear otro método más llamado por ejemplo:
public void listarNombres()...que se encargará de recorrer uno a uno los elementos del ArrayList mediante un bucle for (o un while, pero un for quizás sea más apropiado) y escribiendolos en pantalla.
Intenta codificar tú este método, si no te sale lo corregimos aquí en el foro.
Tras esto,
ya en el main(), solo quedaría:
inicializar el objeto ListaCantantesFamosos, por ejemplo:
ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos("Nombre de Lista);
//Recordemos que el nombre de lista es un atributo que lo añades tú, si lo deseas...
//no forma parte del enunciado original
pedir dos nombres por teclado que agregaremos a la lista mediante el método
listaCantantes.addNombre(String
)
Para pedir los nombres solo necesitas crear un objeto Scanner y un objeto String para guardar el nombre que introduzca por teclado.
Aunque pediremos dos nombres, no necesitas dos objetos String. Te basta con uno:
pides nombre y lo guardas en el String..., lo añades al arraylist,
... pides otro nombre y lo guardas en el mismo String (ya no importa que se borre el nombre anterior).. lo añades...
De hecho, se puede hacer sin usar ningún objeto String, pero hazlo usando un objeto String, y luego veremos como se puede hacer sin tener que usarlo.
y por último
mostrar el listado llamando al método:listaCantantes.listarNombres();
Como ves, hay bastante que corregir en tu ejercicio. Pero oye, no te desesperes, debemos poner en valor que lo has intentado y te has esforzado en escribir bastante código según te suponías como iba a funcionar.
Conozco gente que lleva tiempo estudiando esto en el institituo...y aún se quedan en blanco sin saber qué escribir en ejercicios similares.
Esto de la programación resulta algo confuso al principio, pero en poco tiempo y cometiendo errores inevitables...acaba resultando tan lógico y sencillo casi como el hablar diario je je