Autor Tema: Java Ejercicios Resueltos Metodo Iterator recorrer colección objetos CU00667B  (Leído 727 veces)

elendur14

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Buen Dia. Les mando las clases para el ejercicio de JAVA desde Cero CU00667B del tutorial de programación orientada a objetos de aprenderaprogramar.

¿Qué me pueden sugerir? Apenas me  estoy adaptando a esto de los objetos y clases.

Tengo Dudas si es recomendable hacer esto:

Código: [Seleccionar]
tempCantante = it.next();

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). Puedes comprobar si tu código es correcto consultando en los foros aprenderaprogramar.com.

Ejemplo de lo que podría ser la ejecución del programa:

La lista inicial contiene los siguientes datos:
Cantante: Madonna.    Disco con más ventas: All I want is you.
Cantante: Jorge Negrete    Disco con más ventas: Jalisco.

Por favor introduzca los datos de otro cantante.
Nombre: Michael Jackson
Disco con más ventas: Thriller
La lista actualizada contiene los siguientes datos:
Cantante: Madonna.    Disco con más ventas: All I want is you.
Cantante: Jorge Negrete    Disco con más ventas: Jalisco.
Cantante: Michael Jackson    Disco con más ventas: Thriller.
¿Desea introducir los datos de otro cantante (s/n)?
s

Código: [Seleccionar]
package cantantesfamosos;

public class CantanteFamoso {

    private String nombreCantante;
    private String discoConMasVentas;

    public CantanteFamoso() {
        nombreCantante = " ";
        discoConMasVentas = " ";
    }

    public CantanteFamoso(String nombreCantante, String discoConMasVentas) {
        this.nombreCantante = nombreCantante;
        this.discoConMasVentas = discoConMasVentas;
    }

    public String getNombreCantante() {
        return nombreCantante;
    }

    public void setNombreCantante(String nombreCantante) {
        this.nombreCantante = nombreCantante;
    }

    public String getDiscoConMasVentas() {
        return discoConMasVentas;
    }

    public void setDiscoConMasVentas(String discoConMasVentas) {
        this.discoConMasVentas = discoConMasVentas;
    }
}

Código: [Seleccionar]
package cantantesfamosos;

import java.util.ArrayList;

public class ListaCantantesFamosos {

    private ArrayList<CantanteFamoso> listaCantantesFamosos;

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

    public void addCantanteFamoso(CantanteFamoso cantanteFamoso) {
        listaCantantesFamosos.add(cantanteFamoso);
    }

    public ArrayList<CantanteFamoso> getListaCantantesFamosos() {
        return listaCantantesFamosos;
    }

    public void setListaCantantesFamosos(ArrayList<CantanteFamoso> listaCantantesFamosos) {
        this.listaCantantesFamosos = listaCantantesFamosos;
    }
}

Código: [Seleccionar]
package cantantesfamosos;

import java.util.Iterator;
import java.util.Scanner;

public class ClasePrincipal {
   
    public static void main(String[] args) {
        int iniciado = 0;
        String nombreCantante = "";
        String discoMasVendido = "";
       
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos();
       
        CantanteFamoso cantante1 = new CantanteFamoso();
        cantante1.setDiscoConMasVentas("El nervio del volcan");
        cantante1.setNombreCantante("Caifanes");
        lista1.addCantanteFamoso(cantante1);
       
        CantanteFamoso cantante2 = new CantanteFamoso();
        cantante2.setDiscoConMasVentas("The dark side of the moon");
        cantante2.setNombreCantante("Pink Floyd");
        lista1.addCantanteFamoso(cantante2);
       
       
        Scanner entrada2 = new Scanner(System.in);
       
        do {
            Iterator<CantanteFamoso> it = lista1.getListaCantantesFamosos().iterator();
            CantanteFamoso tempCantante = new CantanteFamoso();
           
            System.out.println("La lista de Canatantes es la siguiente........\n");
           
            while (it.hasNext()) {
                tempCantante = it.next();
               
                System.out.println("Nombre del cantante: " + tempCantante.getNombreCantante() + "- Disco Mas Vendido: " + tempCantante.getDiscoConMasVentas());
            }
           
            System.out.println("**** Elige una Opcion ****");
            System.out.println("** 1. Agregar Cantante  **");
            System.out.println("** 2. Salir             **\n\n");
           
            String teclado = entrada2.nextLine();
           
            if (teclado.equals("1")) {
               
                System.out.println("Teclea el nombre del Cantante: ");
                nombreCantante = entrada2.nextLine();
                System.out.println("Teclea el Disco Mas Vendido");
                discoMasVendido = entrada2.nextLine();
               
                CantanteFamoso cantanteNuevo = new CantanteFamoso();
                cantanteNuevo.setNombreCantante(nombreCantante);
                cantanteNuevo.setDiscoConMasVentas(discoMasVendido);
               
                lista1.addCantanteFamoso(cantanteNuevo);
               
            } else if (teclado.equals("2")) {
                iniciado = 1;
            } else {
                System.err.println("Opcion Incorrecta....");
            }
        } while (iniciado == 0);
    }
}
« Última modificación: 14 de Junio 2020, 17:36 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2644
    • Ver Perfil
Re:CU00667B Ejercicio Resuelto Metodo Iterator
« Respuesta #1 en: 14 de Junio 2020, 17:35 »
Buenas elendur14, por favor lee https://aprenderaprogramar.com/foros/index.php?topic=1460.0 y sigue las recomendaciones que ahí se dan a la hora de poner título a los temas. Incluye varias palabras clave que correspondan hasta alcanzar el espacio disponible para el título (es importante incluir el nombre del lenguaje y más palabras clave; en este título te ha faltado incluir Java) y pon el código de los ejercicios (por ejemplo CU00667B) al final del título del tema, no al principio.

Algunos comentarios. En el constructor de ListaCantantesFamosos en lugar de listaCantantesFamosos = new ArrayList<>(); deberías haber escrito listaCantantesFamosos = new ArrayList<CantanteFamoso>(); por ser preferible siempre especificar el tipo de objeto que contiene la lista.

La inicialización de Strings por convenio se hace a cadena vacía, no a un espacio en blanco. Es decir, en lugar de
nombreCantante = " ";
discoConMasVentas = " ";

Debe ser (para atenernos al convenio):
nombreCantante = "";
discoConMasVentas = "";

Ten en cuenta que aunque parezca lo mismo, no es lo mismo una cadena vacía (longitud 0) que un espacio en blanco (longitud 1).

Respecto a si es recomendable hacer esto: tempCantante = it.next(); la respuesta es que sí, puedes usarlo siempre que te resulte útil y lo hagas de una forma coherente, como en este caso.

Por otro lado, tu código está muy bien. Lo único que te recomendaría es que como ejercicio pruebes a hacerlo más compacto de la siguiente manera: en la clase con el main, en lugar de crear los dos objetos y luego usar los métodos set, prueba a hacerlo directamente usando el constructor.
Y en el bucle prueba a en lugar de crear el cantante y hacer los set para luego añadir a la lista, hacerlo todo directamente en el lista1.addCantanteFamoso

Finalmente animarte a que nos ayudes a responder en los foros. Revisando ejercicios de compañeros adquirirás destreza en la revisión de código y serás cada vez más rápido en su análisis, aparte de que nos ayudarás.

Salu2

elendur14

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Gracias por los comentarios y los tips que me dan.

Pasare para ver las normas del foro.

Y en cuanto a ayudar a otro tratare de ayudar en lo que pueda.

 

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