Autor Tema: Tipo Iterator api Java para recorrrer un ArrayList ejemplo BlueJ IDE CU00667B  (Leído 2525 veces)

Jesu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Ejercicio CU00667B del manual de programación Java desde cero con editor BlueJ

Citar
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.

Código: [Seleccionar]
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;
}
     
  }

Código: [Seleccionar]
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();
}
       
 }

Código: [Seleccionar]
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());
}
}
}
« Última modificación: 17 de Junio 2017, 18:49 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

Código: [Seleccionar]
       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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".