Pues aqui esta mi solución para este ejercicio.
Como siempre, agradezco sujerencias para mejorar el codigo.
Clase ListaCantantesFamosos:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class ListaCantantesFamosos
{
private ArrayList<CantanteFamoso>listaCantantesFamosos; //declaramos un ArrayList que contiene objetos tipo cantanteFamoso
private String nombre;//establecemos o declaramos un atributo nombre de la lista
public ListaCantantesFamosos(String valor_nombre){
nombre=valor_nombre;
listaCantantesFamosos=new ArrayList<CantanteFamoso>();//creamos un objeto ArrayList, listaCantantesFamosos, que contiene objetos tipo cantanteFamoso
}
public void addCantante(CantanteFamoso valor_nombre){
listaCantantesFamosos.add(valor_nombre);
}
public void listar(){
Iterator<CantanteFamoso>it=listaCantantesFamosos.iterator();//creamos la copia creando un objeto iterator
CantanteFamoso tmpCantanteFamoso=new CantanteFamoso("","");//creamos el objeto CantanteFamoso temporal para guardar el que saquemos de la lista
while(it.hasNext()){//devuelve true si el objeto no es el ultimo de la collección
tmpCantanteFamoso=it.next();//sacamos de la lista un objeto CantanteFamoso, el metodo next() ha avanzado ya al siguiente elemento...
System.out.println("Cantante: "+ tmpCantanteFamoso.getCantante());
System.out.println("Disco mas vendido: "+ tmpCantanteFamoso.getDisco());
}
}
public void introducirNuevoCantante(){
System.out.println("Por favor, introduzca otro cantante: \nNombre:");
Scanner sc=new Scanner(System.in);
String entradaNombre=sc.nextLine();
System.out.println("Disco:");
String entradaDisco=sc.nextLine();
CantanteFamoso newCantante3=new CantanteFamoso(entradaNombre,entradaDisco);
listaCantantesFamosos.add(newCantante3);
System.out.println("La lista actualizada contiene los siguientes nombres");
listar();
}
}
clase CantanteFamoso:
public class CantanteFamoso
{
private String nombre;
private String discoConMasVentas;
public CantanteFamoso(String valor_nombre, String valor_disco){
nombre=valor_nombre;
discoConMasVentas=valor_disco;
}
public void setCantante(String valor_nombre){
nombre=valor_nombre;
}
public String getCantante(){
return nombre;
}
public void setDisco(String valor_disco){
discoConMasVentas=valor_disco;
}
public String getDisco(){
return discoConMasVentas;
}
}
y clase TextListaCantantesFamosos:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class TextListaCantantesFamosos
{
public static void main(String[]arg){
ListaCantantesFamosos lista=new ListaCantantesFamosos("lista");//creamos un objeto ArrayList
CantanteFamoso newCantante1=new CantanteFamoso("Madonna","no se");//creamos un objeto tipo CantanteFamoso
CantanteFamoso newCantante2=new CantanteFamoso("BonJovi","puede ser..");//creamos un objeto tipo CantanteFamoso
lista.addCantante(newCantante1);
lista.addCantante(newCantante2);
System.out.println("La lista inicial contiene los siguientes nombres");
lista.listar();
lista.introducirNuevoCantante();
boolean aux=true;
while(aux==true){
System.out.println("¿Desea introducir otro cantante (S/N)?");
Scanner sc=new Scanner(System.in);
String decision=sc.nextLine();
if(decision.equalsIgnoreCase("S")){
lista.introducirNuevoCantante();
aux=true;
}else{
aux=false;
}
}
}
}
Un saludo.