Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: momo en 12 de Septiembre 2014, 23:32
-
Aqui les Dejo Esta Entrega
En Realidad Me Costo Un poco en elaborar el ejercicio, pero hay vamos a la final lo pude Lograr.... algún detalle que tenga el ejercicio por favor decírmelo
/*
* Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList
* con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main
* que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la
* lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido
* mostrar la lista actualizada usando un for extendido. Una vez mostrada la lista actualizada, se debe
* dar opción a elegir entre volver a introducir otro cantante o salir del programa (se podrán introducir
* tantos 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.
*/
Entrada Teclado
import java.util.Scanner;
public class EntradaTeclado
{
private String entradaTeclado;
public EntradaTeclado()
{
entradaTeclado="";
solicitarEntrada();
}
public void solicitarEntrada()
{
Scanner escanearEntrada=new Scanner(System.in);
entradaTeclado=escanearEntrada.nextLine();
}
public String getEntrada(){return entradaTeclado;}
}
Lista Cantante Famoso
import java.util.ArrayList;
public class ListaCantanteFamoso
{
private String nombreCantante;// Declaramos Atributo
private ArrayList<String>listaDeCantantes;//Declaramos la Array que va a contener los objetos
public ListaCantanteFamoso(String valorNombre)
{
nombreCantante=valorNombre;
listaDeCantantes=new ArrayList<String>();
listaDeCantantes.add("Bob Marley"); //Tres Cantantes
listaDeCantantes.add("Rio Roma");
listaDeCantantes.add("Avici");
}
public void agregarNombre(String nombre)
{
listaDeCantantes.add(nombre);//Agregamos Los Cantantes
}
public String getNombre(int posicion)//Metodo para extraer un objeto de sierta posicion
{
if(posicion>=0&&posicion<listaDeCantantes.size())
{
return listaDeCantantes.get(posicion);
}else
{
return " No Existe Nombre Para la Posicion Solicitada";
}
}
public void mostrarLista()
{
int i=0;
for(String nombres:listaDeCantantes)//Utilizamos For each para recorrer la lista de los cantantes
{
System.out.println((i+1) +": "+nombres);
i++;
}
}
public int getTamanho()
{
return listaDeCantantes.size();//Tamaño de la lista;
}
}
Test Lista Cantante Famoso
import java.util.Scanner;
public class TestListaCantanteFamoso
{
public static void main(String[] args)
{
ListaCantanteFamoso lista =new ListaCantanteFamoso("");//Se crea el Objeto Lista
boolean otroCantante=true;//Se inicializa en True para que entre al bucle
while(otroCantante==true)// comparamos la variable con true para que entre al bucle de lo contrario no entrara si colocamos false
{
System.out.println ("Por Favor Agregar Un Cantante");
EntradaTeclado primeraEntrada =new EntradaTeclado();
System.out.println("Gracias Por Agregar al Cantante");
lista.agregarNombre(primeraEntrada.getEntrada());
System.out.println("Deceas Agregar otro Cantante");
Scanner tecladoEscaner=new Scanner(System.in);
String resp=tecladoEscaner.nextLine();
//Se Hace la condicion para saber si queremos agregar otro cantante si la letra es "s" o "S" lo agrega si la letra es "n" o "N" no lo agrega,
//y pasa a mostrar el tamaño de la lista y lista con el nombre de todos los cantantes
if(resp.equals("s")==true || resp.equals("S")==true)
{
otroCantante=true;//se iguala a True para que inicie de nuevo a agregar al cantante
}else if(resp.equals("n")==false || resp.equals("N")==false)
{break;//Rompe la condicion del IF
}//Fin If Anidado
}
System.out.println("Cantidad de Cantantes en la lista : "+lista.getTamanho());//Muestra el tamaño de la lista
lista.mostrarLista();//Muestra la lista
System.out.println("Gracias ");
}
}
-
Hola momo
Tu ejercicio es funcional al 100%
Y cumple lo solicitado en el enunciado
Las clases EntradaTeclado y ListaCantanteFamoso, correctas, sin comentarios
La clase TestListaCantanteFamoso, también funciona bien, pero te quiero comentar lo siguiente:
En estas líneas
Scanner tecladoEscaner=new Scanner(System.in);
String resp=tecladoEscaner.nextLine();
Has copiado el código de la clase EntradaTeclado. Estas repitiendo código que ya tienes escrito.
He aquí dos formas de conseguir lo que tu quieres: Una respuesta por teclado
primeraEntrada = new EntradaTeclado();
String resp = primeraEntrada.getEntrada();
Vuelves a utilizar el mismo objeto primeraEntrada
o
EntradaTeclado segundaEntrada = new EntradaTeclado();
String resp = segundaEntrada .getEntrada();
Creas un nuevo objeto 'segundaEntrada'
A continuación tienes un else if
else if(resp.equals("n")==false || resp.equals("N")==false)
Cuya condición se ejecutará siempre
Pongas lo que pongas en las comillas de equals, comparado con false siempre dará false.
Es decir, es cierto que es false, pues se cumple la condición, al cumplirse la condición se ejecutará el break; que por cierto rompe el bucle del while no la condición del if
Así pues, esta condición del if te la puedes ahorrar y poner un simple else con el break dentro.
A, se me olvidaba
Cuando quieras que el usuario del programa de una entrada por teclado, preséntale un mensaje indicando que se espera recibir, si un nombre, un número, o un si o un no
Por ejemplo
System.out.println("Deceas Agregar otro Cantante. Pulsa S para Si, cualquier otra tecla para No");
Eso es todo. Saludos