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.