Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: el_calderas en 09 de Marzo 2015, 22:08
-
Pues aqui esta mi solución para este ejercicio.
Como siempre, agradezco sujerencias para mejorar el codigo.
Clase ListaCantantesFamosos:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class ListaCantantesFamosos
{
private ArrayList<CantanteFamoso>listaCantantesFamosos; //declaramos un ArrayList que contiene objetos tipo cantanteFamoso
private String nombre;//establecemos o declaramos un atributo nombre de la lista
public ListaCantantesFamosos(String valor_nombre){
nombre=valor_nombre;
listaCantantesFamosos=new ArrayList<CantanteFamoso>();//creamos un objeto ArrayList, listaCantantesFamosos, que contiene objetos tipo cantanteFamoso
}
public void addCantante(CantanteFamoso valor_nombre){
listaCantantesFamosos.add(valor_nombre);
}
public void listar(){
Iterator<CantanteFamoso>it=listaCantantesFamosos.iterator();//creamos la copia creando un objeto iterator
CantanteFamoso tmpCantanteFamoso=new CantanteFamoso("","");//creamos el objeto CantanteFamoso temporal para guardar el que saquemos de la lista
while(it.hasNext()){//devuelve true si el objeto no es el ultimo de la collección
tmpCantanteFamoso=it.next();//sacamos de la lista un objeto CantanteFamoso, el metodo next() ha avanzado ya al siguiente elemento...
System.out.println("Cantante: "+ tmpCantanteFamoso.getCantante());
System.out.println("Disco mas vendido: "+ tmpCantanteFamoso.getDisco());
}
}
public void introducirNuevoCantante(){
System.out.println("Por favor, introduzca otro cantante: \nNombre:");
Scanner sc=new Scanner(System.in);
String entradaNombre=sc.nextLine();
System.out.println("Disco:");
String entradaDisco=sc.nextLine();
CantanteFamoso newCantante3=new CantanteFamoso(entradaNombre,entradaDisco);
listaCantantesFamosos.add(newCantante3);
System.out.println("La lista actualizada contiene los siguientes nombres");
listar();
}
}
clase CantanteFamoso:
public class CantanteFamoso
{
private String nombre;
private String discoConMasVentas;
public CantanteFamoso(String valor_nombre, String valor_disco){
nombre=valor_nombre;
discoConMasVentas=valor_disco;
}
public void setCantante(String valor_nombre){
nombre=valor_nombre;
}
public String getCantante(){
return nombre;
}
public void setDisco(String valor_disco){
discoConMasVentas=valor_disco;
}
public String getDisco(){
return discoConMasVentas;
}
}
y clase TextListaCantantesFamosos:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class TextListaCantantesFamosos
{
public static void main(String[]arg){
ListaCantantesFamosos lista=new ListaCantantesFamosos("lista");//creamos un objeto ArrayList
CantanteFamoso newCantante1=new CantanteFamoso("Madonna","no se");//creamos un objeto tipo CantanteFamoso
CantanteFamoso newCantante2=new CantanteFamoso("BonJovi","puede ser..");//creamos un objeto tipo CantanteFamoso
lista.addCantante(newCantante1);
lista.addCantante(newCantante2);
System.out.println("La lista inicial contiene los siguientes nombres");
lista.listar();
lista.introducirNuevoCantante();
boolean aux=true;
while(aux==true){
System.out.println("¿Desea introducir otro cantante (S/N)?");
Scanner sc=new Scanner(System.in);
String decision=sc.nextLine();
if(decision.equalsIgnoreCase("S")){
lista.introducirNuevoCantante();
aux=true;
}else{
aux=false;
}
}
}
}
Un saludo.
-
Hola la clase con el main en vez de TextListaCantantesFamosos (text=texto) debe llamarse TestListaCantantesFamosos (Test=prueba). La clase CantanteFamoso está perfecta lo único que podrías haberle añadido es un constructor sin parámetros, siempre suele resultar útil tenerlo.
La clase ListaCantantesFamosos también está muy bien. Para que cuando pides datos el cursor se quede en la misma línea puedes usar System.out.print("Por favor, introduzca otro cantante: \nNombre:"); en vez de System.out.println("Por favor, introduzca otro cantante: \nNombre:");
println hace que se salte a la siguiente línea, mientras que print mantiene en la misma línea.
En el main todo está bien. Usas como nombres de objetos newCantante1 y newCantante2, esos nombres te recomendaría que no los usaras porque new es una palabra reservada java y usar new dentro de un nombre puede confundir.
Salu2
-
Tendre en cuenta tus consejos apartir de ahora.
Lo del text..fue un despiste por otra cosa que estaba haciendo al mismo tiempo que este codigo.
Un saludo.