Buenas Toni, he rehecho el ejercicio, cree un constructor para CantanteFamoso(String nombre, String disco).
No me salía ahora hacerlo usando setNombre() setDisco() y el constructor vacio. Era más lío pero hacerse supongo que se podia.
Sobre el boolean semaforo, simplemente lo pongo para que solo iniciar, no se pueda poner 'n' y salir del programa sin añadir mínimo 1 cantante, sin ese boolean podía hacerse No y terminar sin añadir.
El resto lo corregí, como siempre muchas gracias por el tiempo dedicado, enormemente agradecido.
Clase CantanteFamoso
public class CantanteFamoso{
private String nombre;
private String discoConMasVentas;
public CantanteFamoso(){ //constructor inicializando atributos con ""
nombre = "";
discoConMasVentas = "";
}
public CantanteFamoso(String valorNombre, String valorDisco){
nombre= valorNombre;
discoConMasVentas = valorDisco; }
//Setters
public void setNombre(String valorNombre){ nombre = valorNombre; }
public void setDisco(String valorDisco){ discoConMasVentas = valorDisco; }
//Getters
public String getNombre(){ return nombre; }
public String getDisco() { return discoConMasVentas; }
}
Clase ListaCantantesFamosos
import java.util.ArrayList;
import java.util.Iterator;
public class ListaCantantesFamosos{
private ArrayList<CantanteFamoso> lista;
public ListaCantantesFamosos(){
lista = new ArrayList <CantanteFamoso>();
}
public void añadirCantante(CantanteFamoso entrada){
lista.add(entrada);
}
public void imprimirArray(){
CantanteFamoso cantante;
Iterator <CantanteFamoso > it = lista.iterator();
while(it.hasNext() ){
cantante = it.next();
System.out.println(" Cantante: " + cantante.getNombre() + " Disco más vendido: " + cantante.getDisco() );
}
}
}
Clase EntradaDatos
import java.util.Scanner;
public class EntradaDatos{
public EntradaDatos(){ /*vacio*/ }
public String recogerString(){
String entrada;
do{
Scanner escaner = new Scanner(System.in);
entrada = escaner.nextLine();
} while(entrada.isEmpty());
return entrada;
}
public char recogerChar(){
String entrada;
char respuesta;
do{
System.out.print(" Solo puedes introducir los carácteres (S)i / (N)o ");
Scanner escaner = new Scanner(System.in);
entrada = escaner.nextLine();
respuesta = entrada.charAt(0);
} while (!entrada.equalsIgnoreCase("s") && !entrada.equalsIgnoreCase("n"));
respuesta = Character.toLowerCase(respuesta);
return respuesta;
}
}
Clase GestorLista (main)
public class GestorLista{
public static void main(String [] args){
String nombre; String disco;
char opcion;
boolean semaforo = false;
// creo nuevo objeto ListaCantantesFamosos
ListaCantantesFamosos nuevaLista = new ListaCantantesFamosos();
//añado dos cantantes manualmente a la arrayList de la nueva ListaCantantesFamosos
nuevaLista.añadirCantante(new CantanteFamoso("Michael Jackson","Thriller"));
nuevaLista.añadirCantante(new CantanteFamoso("Marta Sanchez", "Ni idea"));
nuevaLista.imprimirArray();
do{
EntradaDatos entrada = new EntradaDatos();
System.out.println(" \n\n ¿Desea introducir los datos de otro cantante ");
opcion = entrada.recogerChar();
if (opcion == 's'){
System.out.println("\n Introduce el nombre de un nuevo cantante ");
nombre = entrada.recogerString();
System.out.println("\n Introduce el nombre del disco más vendido ");
disco = entrada.recogerString();
nuevaLista.añadirCantante(new CantanteFamoso(nombre,disco));
semaforo = true;
nuevaLista.imprimirArray();
}
}while(opcion == 's' || semaforo == false);
System.out.println("\n \n Final del programa");
}
}