Autor Tema: Ejemplo uso de iteradores Java Tipo Iterator recorrer colecciones CU00667B  (Leído 3361 veces)

adrit

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 59
    • Ver Perfil
Hola!

Mi código para el ejercicio CU00667B

Citar
EJERCICIO

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

Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {
    private String entradaTeclado;

    public EntradaDeTeclado ()  { //Constructor
        entradaTeclado="";
        pedirEntrada(); //Llamada al método interno.
    } //Cierre del constructor

    public void pedirEntrada ()  {  //Método de la clase         
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado = entradaEscaner.nextLine ();     } //Cierre del método pedirEntrada

    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
}

Código: [Seleccionar]
public class CantanteFamoso {
   
    private String nombre;
    private String discoConMasVentas;
   
    public CantanteFamoso () { //constructor sin argumentos
        nombre = "";
        discoConMasVentas = "";
    }

    public CantanteFamoso (String nombre, String discoConMasVentas) { //constructor con argumentos
        this.nombre = nombre;
        this.discoConMasVentas = discoConMasVentas;
    }
   
    public void setCantante (String nombre) {
        this.nombre = nombre;
    }
   
    public void setDisco (String discoConMasVentas) {
        this.discoConMasVentas = discoConMasVentas;
    }
   
    public String getCantante () { return nombre; }
   
    public String getDisco () { return discoConMasVentas; }
       
}

Código: [Seleccionar]
import java.util.Iterator;
import java.util.ArrayList;

public class ListaCantantesFamosos {

    ArrayList<CantanteFamoso> listaCantantesFamosos;

    public ListaCantantesFamosos () {
        listaCantantesFamosos = new ArrayList <CantanteFamoso>();
    }

    public void addCantante (CantanteFamoso cantante) {
        listaCantantesFamosos.add(cantante);
    }

    public void getLista () {
        Iterator<CantanteFamoso> listaCantantes = listaCantantesFamosos.iterator();
        CantanteFamoso tmp;
        while (listaCantantes.hasNext()) {
            tmp = listaCantantes.next();
            System.out.println("Cantante: "+tmp.getCantante()+" - Disco mas vendido : "+tmp.getDisco());
        }
    }
}

Main

Código: [Seleccionar]
public class Test {

    static ListaCantantesFamosos lista;

    public static void main (String[] args) {

        lista = new ListaCantantesFamosos();
        lista.addCantante(new CantanteFamoso ("Madonna","All I want is you"));
        lista.addCantante(new CantanteFamoso ("Jorge Negrete","Jalisco"));
        System.out.println("\nMostrando lista actual\n");
        lista.getLista();
        opcionCantante();
    }

    public static void opcionCantante () { //metodo que nos pregunta por mas cantantes

        EntradaDeTeclado respuestaUsuario, nuevaEntrada;
        CantanteFamoso cantante;

        do {
            System.out.println("\nDesea ingresar otro cantante? Y/N");
            respuestaUsuario = new EntradaDeTeclado();
            //if que contempla respuesta "Y", respuesta "N" o cualquier otra respuesta
            if(respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
                cantante = new CantanteFamoso();
                System.out.println("\nIngresa un nuevo cantante");
                nuevaEntrada = new EntradaDeTeclado();
                cantante.setCantante(nuevaEntrada.getEntrada());
                System.out.println("Ingresa el disco mas vendido de "+nuevaEntrada.getEntrada());
                nuevaEntrada = new EntradaDeTeclado();
                cantante.setDisco(nuevaEntrada.getEntrada());
                lista.addCantante(cantante);
                System.out.println("\nMostrando lista actualizada\n");
                lista.getLista();
            } else if (respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
            } else System.out.println("Por favor ingresa Y o N");
        } while (!respuestaUsuario.getEntrada().equalsIgnoreCase("n"));
        System.out.println("\nMostrando lista final\n");
        lista.getLista();
        System.out.println("\nPrograma finalizado");
    }
}

Gracias!
« Última modificación: 17 de Julio 2015, 17:16 por Alex Rodríguez »

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Tipo Iterator api Java (CU00667B) Ejercicio resuelto
« Respuesta #1 en: 17 de Julio 2015, 05:18 »
Hola Adrián:

Veo muy bien tu código, cumple con la consigna del ejercicio.
Quisiera hacerte solamente dos observaciones:

1) En la clase Test, haría una modificación para no dejar el 'else if" vacío.

Código: [Seleccionar]
public class Test {

    static ListaCantantesFamosos lista;

    public static void main (String[] args) {

        lista = new ListaCantantesFamosos();
        lista.addCantante(new CantanteFamoso ("Madonna","All I want is you"));
        lista.addCantante(new CantanteFamoso ("Jorge Negrete","Jalisco"));
        System.out.println("\fMostrando lista actual\n");
        lista.getLista();
        opcionCantante();
    }

    public static void opcionCantante () { //metodo que nos pregunta por mas cantantes

        EntradaDeTeclado respuestaUsuario, nuevaEntrada;
        CantanteFamoso cantante;

        do {
            System.out.println("\nDesea ingresar otro cantante? Y/N");
            respuestaUsuario = new EntradaDeTeclado();
            //if que contempla respuesta "Y", respuesta "N" o cualquier otra respuesta
            if(respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
                cantante = new CantanteFamoso();
                System.out.println("\nIngresa un nuevo cantante");
                nuevaEntrada = new EntradaDeTeclado();
                cantante.setCantante(nuevaEntrada.getEntrada());
                System.out.println("Ingresa el disco mas vendido de "+nuevaEntrada.getEntrada());
                nuevaEntrada = new EntradaDeTeclado();
                cantante.setDisco(nuevaEntrada.getEntrada());
                lista.addCantante(cantante);
                System.out.println("\nMostrando lista actualizada\n");
                lista.getLista();
            } else if (!respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
                System.out.println("Por favor ingresa Y o N");
              }
        } while (!respuestaUsuario.getEntrada().equalsIgnoreCase("n"));
        System.out.println("\nMostrando lista final\n");
        lista.getLista();
        System.out.println("\nPrograma finalizado");
    }
}

2) En la clase ListaCantantesFamosos renombraría la clase getLista() por un nombre más acorde, como podría ser por ejemplo mostrarLista() ya que lo que el método hace es "mostrar la lista", y no "devolver la lista" que es lo que se interpretaría con getLista().

A seguir adelante!

adrit

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 59
    • Ver Perfil
Re:Tipo Iterator api Java (CU00667B) Ejercicio resuelto
« Respuesta #2 en: 17 de Julio 2015, 14:02 »

Gracias RaGa.

Valoro mucho tus devoluciones!

 

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