Buenas!!! me tome algo de tiempo releyendo y acomodando las ideas cuanto a los objetos(que me esta costando bastante...) gracias a las correcciones y consejos dados por Jorge Lopez a mi ejercicio anterior.
Espero no haber cometido los mismos errores en este...
El ejercicio es el CU00666B del curso de Aprenda a programar en Java como si estuviera en primero.
clase de prueba
/**
* Resolucion del ejercicio CU00666B
*
* @author Hugo Segura (hymsoft)
*
*/
public class TestCU00666B
{
public static void main(String[] args){
//Declaracion de variables
String entrada1 = "";
String respuestaUsuario = "";//para evitar confusiones con las entradas por teclado
EntradaDeTeclado suEntrada = new EntradaDeTeclado();//Objeto para pedir el ingreso por teclado
EntradaDeTeclado suRespuesta = new EntradaDeTeclado();
int i = 0;//auxiliar contador
boolean sigueCargando = true;
boolean imprimirdenuevo = false;
System.out.println("Empecemos el programa...\n\nCantantes por defecto\n");
//Consigna 1 - Inicializo el objeto ListaCantantesFamosos y muestro los cantates por pantalla
ListaCantantesFamosos miLista = new ListaCantantesFamosos();//objeto que guarda la lista de cantantes famosos
miLista.imprimirListaCantantes();
//Consigna 2 - Solicitar un cantante mas y despues mostrar la lista actualizada
System.out.println("\nIngrese el nombre de otro cantante...");
entrada1 = suEntrada.pedirEntrada();
if(entrada1.length()== 0){
do {
System.out.println("Esta cadena no puede estar vacia...\npor favor ingreso el nombre de otro cantante...");
entrada1 = suEntrada.pedirEntrada();
}while (entrada1.length()== 0);
}
miLista.getListaDeNombres().add(entrada1);//Agrego el cantante
miLista.imprimirListaCantantes();
//Consigna 3 - Preguntar si se quieren añadir mas cantantes
do{
System.out.println("\nQuiere cargar mas cantantes?? S = Continua / Cualquier otro Cancela)");
respuestaUsuario = suRespuesta.pedirEntrada();
if (respuestaUsuario.equals("s")){
System.out.println("\nIngrese el nombre de otro cantante...");
entrada1 = suEntrada.pedirEntrada();
if(entrada1.length()== 0){
do {
System.out.println("Esta cadena no puede estar vacia...\npor favor ingreso el nombre de otro cantante...");
entrada1 = suEntrada.pedirEntrada();
}while (entrada1.length()== 0);
}
miLista.getListaDeNombres().add(entrada1);//Agrego el cantante
imprimirdenuevo = true ;//como se agrego un nuevo cantante al final de todo imprimo de nuevo el listado
}else{
sigueCargando = false;//para salir del do/while de carga
}
}while (sigueCargando);
if (imprimirdenuevo){
System.out.println("Lista de cantantes actualizada\n");
miLista.imprimirListaCantantes();
}
}//cierre del main
}//cierre de la clase
Clase entradaTeclado (la corregida)
/**
* Clase para manipular la entrada por teclado
*
* @author Hugo Segura corregida por Jorge Lopez de aprenderaprogramar.com
*/
import java.util.Scanner;
public class EntradaDeTeclado
{
public EntradaDeTeclado(){}//constructor por defecto
/* Este metodo retorna un String como reultado de lo ingresado
* por el usuario mediante el teclado
*/
public String pedirEntrada(){
String entradaTeclado = "";
Scanner entradaScanner = new Scanner(System.in);
entradaTeclado = entradaScanner.nextLine();
return entradaTeclado;
}//cierre entradaTeclado
}//Cierre clase
y mi nueva clase de cantantes famosos
/**
* Clase generica de cantantes famosos
*
* @author Hugo Segura (hymsoft) corregida por Jorge Lopez de aprenderaprogramar.com
*/
import java.util.ArrayList;
import java.util.List;
public class ListaCantantesFamosos{
//Declaracion de variables
private List<String> listaDeNombres = new ArrayList<String>();//Array de objetos String
//Constructor
public ListaCantantesFamosos(){
//Agrego a la lista los 3 cantantes por defecto
listaDeNombres.add("David Gilmour");
listaDeNombres.add("Brian Johnson");
listaDeNombres.add("Rod Evans");
}//Cierre del constructor
public List<String> getListaDeNombres(){
return listaDeNombres;
}//cierre getListaDeNombres
public void setListaDeNombres(List<String> listaDeNombres){
this.listaDeNombres = listaDeNombres;
}//cierre setListaDeNombres
public void imprimirListaCantantes(){//metodo que imprime toda la lista de cantantes
int i = 0;//auxiliar contador
for (String cantantes: listaDeNombres){
i++;
System.out.println("Cantante " + i + ": " + cantantes);
}//cierre for
}//cierre imprimirListaCantantes
}//cierre clase