Hola ronal, hay un detalle que debes tener en cuenta.
Lo que declaras después de public class son atributos de clase:
public class ListaCantantesFamosos {
ArrayList <String> nombreCantantes;
String shakira = "Shakira", chayane = "Chayane", mark = "Mark", nuevo = "";
Scanner solicitud;Eso significa que todos los objetos que se creen con new llevarán esos atributos. Pero tiene poco sentido que todos los objetos tengan como atributo shakira = "shakira"
Por ello será preferible dejar como atributo aquello que es necesario para representar la clase: la clase representa una lista de nombres de cantantes y por ello el único atributo que necesita es ArrayList <String> nombreCantantes;
Los otros valores que has declarado como atributos debes trasladarlos como variables locales de métodos o constructores, de esa forma no aparecen como atributos de clase.
Podríamos escribir esto:
public ListaCantantesFamosos (){//Metodo constructor
String shakira = "Shakira", chayane = "Chayane", mark = "Mark",
nombreCantantes = new ArrayList<>();
nombreCantantes.add(mark);
nombreCantantes.add(shakira);
nombreCantantes.add(chayane);
}
Pero es preferible no crear variables sino usar directamente los String si no queremos las variables para otra cosa.
public ListaCantantesFamosos (){//Metodo constructor
nombreCantantes = new ArrayList<>();
nombreCantantes.add("Mark");
nombreCantantes.add("Shakira");
nombreCantantes.add("Chayane");
}
El caso de solicitud lo resolveríamos así:
public void ingresarCantantes(){
Scanner solicitud = new Scanner(System.in);
nuevo = solicitud.nextLine();
}
El atributo nuevo también se puede eliminar. Para ello tendrías que hacer la adición del nombre a la lista en el mismo momento en que se recibe el nombre por teclado. Puedes fijarte en este ejercicio resuelto como referencia:
https://www.aprenderaprogramar.com/foros/index.php?topic=1549Saludos