Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Jesu en 22 de Abril 2017, 21:00
-
Ejercicio CU00667B del manual de programación Java desde cero con editor BlueJ
Crea una clase denominada ListaCantantesFamosos que disponga de un atributo ArrayList listaCantantesFamosos que contenga objetos de tipo CantanteFamoso. La clase debe tener un método que permita añadir objetos de tipo CantanteFamoso a la lista. Un objeto de tipo CantanteFamoso tendrá como atributos nombre (String) y discoConMasVentas (String), y los métodos para obtener y establecer los atributos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y añade manualmente dos objetos de tipo CantanteFamoso a la la lista. Usando iterator muestra los nombres de cada cantante y su disco con más ventas por pantalla. Se debe pedir al usuario un nombre y disco con más ventas de otro cantante famoso, y una vez introducidos los datos mostrar la lista actualizada usando iterator. Una vez mostrada la lista actualizada, se debe dar opción a elegir entre volver a introducir los datos de otro cantante o salir del programa (se podrán introducir tantos datos de 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.
package Ejercicios;
// Declaración del paquete java util para poder usar un ArrayList.
import java.util.*;
// Creación de la clase ListaCantantesFamosos.
public class CantantesFamosos {
private String nombre;
private String disco; // Hace alusión al disco mas vendido
public CantantesFamosos(String Vnombre,String Vdisco)
{
this.nombre=Vnombre;
this.disco=Vdisco;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDisco() {
return disco;
}
public void setDisco(String disco) {
this.disco = disco;
}
}
package Ejercicios;
import java.util.*;
import java.util.Iterator;
import java.util.ArrayList;
public class ListaCantantesFamosos2
{
private ArrayList<CantantesFamosos> listaCantantes=new ArrayList<>();
public ListaCantantesFamosos2()
{
}
public void addCantantes(String nombre, String disco){
CantantesFamosos e=new CantantesFamosos(nombre,disco);
listaCantantes.add(e);
}
public ArrayList getLista(){
return listaCantantes;
}
public Iterator<CantantesFamosos> iterator() {
// TODO Auto-generated method stub
return listaCantantes.iterator();
}
}
package Ejercicios;
import java.util.Iterator;
import java.util.*;
import java.util.ArrayList;
public class DemoListaCantantesFamosos2 {
public static void main(String[] args) {
Scanner lee=new Scanner(System.in);
String nombre, disco,marca;
// TODO Auto-generated method stub
ListaCantantesFamosos2 lista=new ListaCantantesFamosos2();
lista.addCantantes("Madona", "All I want is you");
lista.addCantantes("Jorge Negrete", "Jalisco");
System.out.println("La lista inicial contiene lo siguiente:");
Iterator <CantantesFamosos> it=lista.iterator();
while(it.hasNext()){
CantantesFamosos item=(CantantesFamosos)it.next();
System.out.println(item.getNombre()+". Disco mas vendido: "+item.getDisco()); }
System.out.print("Por Favor introduzca los datos del otro cantante:\nNombre: ");
nombre=lee.nextLine();
System.out.print("Disco mas vendido:");
disco=lee.nextLine();
lista.addCantantes(nombre, disco);
System.out.println("La lista actualizada contiene los siguientes datos");
Iterator <CantantesFamosos> it1=lista.iterator();
while(it1.hasNext()){
CantantesFamosos item=(CantantesFamosos)it1.next();
System.out.println(item.getNombre()+". Disco mas vendido: "+item.getDisco());
}
do{
System.out.print("¿Desea introducir los datos de otro cantante? Marque s si desea y cualquier otra si no lo desea");
marca=lee.nextLine();
if(marca.equals("s")){
System.out.print("Introduce nombre del cantante");
nombre=lee.nextLine();
System.out.print("Introduce Disco del cantante");
disco=lee.nextLine();
lista.addCantantes(nombre, disco);
}
else{
}
}while(marca.contains("s"));
System.out.println("La lista actualizada contiene los siguientes datos: ");
Iterator<CantantesFamosos> it2=lista.iterator();
while(it2.hasNext()){
CantantesFamosos item=(CantantesFamosos)it2.next();
System.out.println(item.getNombre()+". Disco mas vendido: "+item.getDisco());
}
}
}
-
Hola Jesu
El nombre de las clases debe ser en singular, en lugar de CantantesFamosos debería ser CantanteFamoso, lee este hilo donde se explica: https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698
El método que has planteado
public void addCantantes(String nombre, String disco){
CantantesFamosos e=new CantantesFamosos(nombre,disco);
listaCantantes.add(e);
}
no cumple con lo que pedía el enunciado: añadir un cantante famoso que se reciba como parámetro. En este hilo puedes ver cómo debe hacerse: https://www.aprenderaprogramar.com/foros/index.php?topic=2889.0
Otro aspecto a mejorar sería el que se mostrara la lista actualizada después de introducir cada nuevo cantante
Saludos