Foros aprenderaprogramar.com
		Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: hymsoft en 17 de Julio 2016, 00:32
		
			
			- 
				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
 
- 
				Hola estaba revisando tu código me he dado cuenta que no cumple como pide el ejercicios porque dice que cada vez que cargue un cantante nuevo tiene que actualizar la lista y no actualiza.
 Ademas en el main tu condiciones ya es muy complejo y repetitivo ya usa mucho variable que no es necesario ademas crea objeto mas de la cuenta pudiendo hacer mas corto y atendible ahorrando código. Le hice alguna modificaciones a tu código pero podes agregarle si quiere el de no quedar vació yo le saque nomas para mostrarte que el código no lleva mucha condición ni variable.
 package pruebacu00666hymsoft;
 
 public class PruebaCu00666Hymsoft {
 
 public static void main(String[] args) {
 //Declaracion de variables
 
 String respuestaUsuario = "";//para evitar confusiones con las entradas por teclado
 EntradaDeTeclado suEntrada = new EntradaDeTeclado();//Objeto para pedir el ingreso por teclado
 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();
 
 do {
 System.out.println("\nIngrese el nombre de otro cantante...");
 respuestaUsuario = suEntrada.pedirEntrada();
 miLista.getListaDeNombres().add(respuestaUsuario);
 miLista.imprimirListaCantantes();
 System.out.println("\nQuiere cargar mas cantantes?? S = Continua / Cualquier otro Cancela)");
 respuestaUsuario = suEntrada.pedirEntrada();
 } while (respuestaUsuario.equalsIgnoreCase("s"));
 
 }
 
 }
 
- 
				Gracias por el comentario DranXZ88. Entendí mal el enunciado, Crei que tenia que pedir mas ingresos de datos y al final imprimir de nuevo el listado actualizado.