Hola amigos aquí dejo una posible solución al ejercicio CU00667B del tutorial básico en programación orientada a objetos con Java.
EJERCICIO
Crea una clase denominada ListaCantantesFamosos que disponga de un atributo ArrayList listaCantantesFamosos que contenga objetos de tipo CantanteFamoso. La clase debe tener un método que permita añadir objetos de tipo CantanteFamoso a la lista. Un objeto de tipo CantanteFamoso tendrá como atributos nombre (String) y discoConMasVentas (String), y los métodos para obtener y establecer los atributos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y añade manualmente dos objetos de tipo CantanteFamoso a la la lista. Usando iterator muestra los nombres de cada cantante y su disco con más ventas por pantalla. Se debe pedir al usuario un nombre y disco con más ventas de otro cantante famoso, y una vez introducidos los datos mostrar la lista actualizada usando iterator. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir los datos de otro cantante o salir del programa (se podrán introducir tantos datos de cantantes como se desee. Para ello usa un bucle while que dé opción a elegir al usuario). Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.
Código ListaCantantesFamosos /**
*
* Ejercicio CU00666B del curso de java desde cero de aprenderaprogramar.com
* Versión 0.1
* Realizado por Pandemia
*
*/
import java.util.ArrayList;
import java.util.Iterator;
public class ListaCantantesFamosos{
private ArrayList<CantanteFamoso> listaCantantesFamosos; //Atributo, lista
//constructor
public ListaCantantesFamosos (){
listaCantantesFamosos = new ArrayList<CantanteFamoso>();
}//cierre del constructor
//Métodos
public void addCantanteFamoso(CantanteFamoso miCantante){
listaCantantesFamosos.add(miCantante);
}//cierre de método
public CantanteFamoso getCantanteFamoso(int miCantante){
return listaCantantesFamosos.get(miCantante);
}//cierre de método
public void mostrarLista(){
Iterator<CantanteFamoso> it = listaCantantesFamosos.iterator();
CantanteFamoso tmpMiCantante;
while(it.hasNext()){
tmpMiCantante = it.next();
System.out.println("Cantante: " + tmpMiCantante.getNombre() + " disco con más ventas: "+
tmpMiCantante.getDiscoConMasVentas());
}//cierre del while
}//cierre de método
}//Cierre de la clase
Código CantanteFamoso/**
* Ejercicio CU00666B del curso de java desde cero de aprenderaprogramar.com
* Versión 0.1
* Realizado por Pandemia
*/
public class CantanteFamoso
{
private String nombre;
private String discoConMasVentas;
//Constructor
public CantanteFamoso(){
nombre = "";
discoConMasVentas = "";
}//ciere del constructor ( sin parametros )
//Constructor 2
public CantanteFamoso(String nombre, String discoConMasVentas){
this.nombre = nombre;
this.discoConMasVentas = discoConMasVentas;
}//Cierre del 2º constructor con parametros
public void setNombre(String nombre){this.nombre = nombre;}
public void setdiscoConMasVentas(String discoConMasVentas){this.discoConMasVentas = discoConMasVentas;}
public String getNombre(){return nombre;}
public String getDiscoConMasVentas(){return discoConMasVentas;}
}//Cierre de la clase
Código TestListaCantantesFamosos/**
* Ejercicio CU00666B del curso de java desde cero de aprenderaprogramar.com
* Versión 0.1
* Realizado por Pandemia
*/
import java.util.Scanner;
public class TestListaCantantesFamosos{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String nombre, disco, elegir;
ListaCantantesFamosos laLista = new ListaCantantesFamosos();
laLista.addCantanteFamoso(new CantanteFamoso("Madonna","Like a Virgin"));
laLista.addCantanteFamoso(new CantanteFamoso("Adele","Lemonade"));
System.out.println("La lista inicial contiene los siguientes datos:");
laLista.mostrarLista();
System.out.println("Por favor introduzca los datos de otro cantante.");
System.out.print("Nombre:");
nombre = sc.nextLine();
System.out.print("Disco con mas ventas:");
disco = sc.nextLine();
laLista.addCantanteFamoso(new CantanteFamoso(nombre,disco));
System.out.println("La lista actualizada es la siguiente:");
laLista.mostrarLista();
System.out.println("¿Desea introducir los datos de otro cantante (s/n)?");
elegir = sc.nextLine();
elegir.toLowerCase(); // metodo de la clase String para que convierta su valor a minuscula
while(!"n".equals(elegir)) // Condicion: Mientras no ingresemos "n" se repetira el while
{
System.out.println("Por favor introduzca los datos de otro cantante.");
System.out.print("Nombre:");
nombre = sc.nextLine();
System.out.print("Disco con mas ventas:");
disco = sc.nextLine();
laLista.addCantanteFamoso(new CantanteFamoso(nombre,disco));
System.out.println("La lista actualizada es la siguiente:");
laLista.mostrarLista();
System.out.println("¿Desea introducir los datos de otro cantante (s/n)?");
elegir = sc.nextLine();
elegir.toLowerCase();
}//cierre del while
System.out.println("Su lista de cantantes ha quedao de la siguiente manera:");
laLista.mostrarLista();
System.out.println("El programa ha finalizado, gracias por su colaboración\n\n");
}//cierre del main
}//cierre de la clase
Saludos y gracias por vuestro tiempo