Autor Tema: Java. Clase que simula una lista. Tipo Iterator. Implementado en BlueJ CU00667B  (Leído 2328 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Ejercicio CU00667B del curso de Java desde cero con BlueJ.

Bueno, creo que el ejercicio hace lo que se pide, pero muy complicado hacer la iteración de cantantes famosos y disco con mas ventas. Por favor como puedo mejorar el siguiente código?

Código: [Seleccionar]
package cantantesfamosos;

/*La clase con el método main es la responsable de dirigir el flujo del programa y en este caso, responsable
 * de realizar tareas con los valores de lo escrito por el usuario y de mostrar mensajes en pantalla*/
//Importamos las clases necesarias



public class TestListaCantantesFamosos{

    public static void main(String[] args){
       
     
        ListaCantantesFamosos lista1 = new ListaCantantesFamosos(); //Creo el objeto
        /*Con estos objetos, pediremos todas las entradas de datos al usuario (reutilizacion de código)*/
        EntradaDeTeclado entradaDeTeclado = new EntradaDeTeclado();
        ListaDiscoConMasVentas lista2 = new ListaDiscoConMasVentas();
       
       
        //Declaramos cuatro variables tipo String que contendrán cada una un valor escrito por el usuario
        //Si son de un mismo tipo, podemos declararlas en una sola linea, separadas por comas
        String entrada1, entrada2, entrada3,entrada4;        
        System.out.println("Empecemos con el programa\n-------------------------\nIntroduce "
        + "el nombre de 2 cantantes famosos...\n\nNombre del Cantante 1:");
        entrada1 = entradaDeTeclado.pedirEntrada();
        System.out.println("El disco Con Mas Ventas ");
        entrada3 = entradaDeTeclado.pedirEntrada();
       
        System.out.println("Nombre del Cantante 2:");
        entrada2 = entradaDeTeclado.pedirEntrada();
        System.out.println("El disco Con Mas Ventas ");
        entrada4 = entradaDeTeclado.pedirEntrada();
       
       
        //agrego los nombres solicitados
        lista1.getListadenombres().add(entrada1);
        lista1.getListadenombres().add(entrada2);
        lista2.getlistadiscoConMasVentas().add(entrada3);
        lista2.getlistadiscoConMasVentas().add(entrada4);
             
         boolean si, no = false;       
       
         while(no == false){
            si = false; no = false;
            System.out.println("¿Desea introducir los datos de otro cantante (s/n)? ");
            entrada1 = entradaDeTeclado.pedirEntrada();
            if(entrada1.equalsIgnoreCase("Si") == true){si = true;
            System.out.println("Por favor introduzca los datos de otro cantante:");
            entrada1 = entradaDeTeclado.pedirEntrada();
            lista1.getListadenombres().add(entrada1);
           
            System.out.println("Ingrese el disco Con Mas Ventas ");
            entrada2 = entradaDeTeclado.pedirEntrada();
            lista2.getlistadiscoConMasVentas().add(entrada2);
           
            System.out.println("\nMuchas Gracias...");
            System.out.println("\nEl listado de los Cantantes Famosos es el siguiente:\n");
            int i = 0; /*Usaremos esta variable como un contador en el for each (otra opción seria usar un bucle
        for normal)*/
            for(String cantante: lista1.getListadenombres()){ //Usamos un for each para recorrer la lista de cantantes
        i++;
        System.out.println("Cantante " + i + ": " + cantante); //Listo todos los nombres
        }
             System.out.println("\nEl listado de los discos mas vendidos es el siguiente:\n");
                int j= 0;   /*Usaremos esta variable como un contador en el for each (otra opción seria usar un bucle
        for normal)*/
                for(String disco: lista2.getlistadiscoConMasVentas()){     //Usamos un for each para recorrer la lista de cantantes
                j++;
                System.out.println("Disco " + j + ": " + disco);} //Listo todos los nombres de los discos Con Mas VeNTAS
        }               
           
            else if(entrada1.equalsIgnoreCase("No") == true){no = true;}
            break;
   
        }
    }
}

Código: [Seleccionar]
package cantantesfamosos;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author ITCO1724
 */
public class ListaDiscoConMasVentas {
 //Declaracion de variables
    public List<String> listadiscoConMasVentas = new ArrayList<String>();
/*Array de objetos string que va a guardar los nombres*/
    //fin declaracion variables
   
    //Constructor
    public ListaDiscoConMasVentas(){
        //Agrego 3 nombres por defecto
   
        listadiscoConMasVentas.add("All I want is you");
        listadiscoConMasVentas.add("Jalisco");
        listadiscoConMasVentas.add("Thriller");
    } //cierre constructor
    public List<String> getlistadiscoConMasVentas() { return listadiscoConMasVentas; }
    public void setlistadiscoConMasVentas(List<String> listadiscoConMasVentas) { this.listadiscoConMasVentas = listadiscoConMasVentas; }
}

Código: [Seleccionar]
package cantantesfamosos;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
//import java.util.Iterator;
/*Para un buen programador, los métodos get y set de una variable de clase, no son opcionales
 * Siempre han de ser declarados aun cuando se crean innecesarios*/

public class ListaCantantesFamosos{
    public List<String> listadenombres;
   
    //Constructor
    public ListaCantantesFamosos(){
        this.listadenombres = new ArrayList<>();
        //Agrego 3 nombres por defecto

        listadenombres.add("Madonna");
        listadenombres.add("Jorge Negrete");
        listadenombres.add("Michael Jackson");
       
       
    } //cierre constructor
   
   
    public List<String> getListadenombres() { return listadenombres; }
    public void setListadenombres(List<String> listadenombres) { this.listadenombres = listadenombres; }
   
    public void verlistadenombres(){
      Iterator<String> it = listadenombres.iterator();
     
    }     
}

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


/*Una clase debe de hacer lo que su nombre dice que es o que hace y no nada mas.*/

public class EntradaDeTeclado{
    private String entradaDeTeclado;
   
//Constructor por defecto
   public EntradaDeTeclado(){
/*Este constructor puede ser invocado aun si no estuviese declarado en esta clase, siempre y cuando no exista ningún otro constructor (con argumento/s) declarado en esta clase, se considera buena practica el declararlo */
       
   } //cierre constructor por defecto
   
   /*Este método retorna un String como resultado de lo que el usuario escriba por teclado*/
   public String pedirEntrada(){ //metodo de clase
       Scanner  entradaScanner = new Scanner(System.in);
       String entradaTeclado;
       entradaTeclado = entradaScanner.nextLine();
       return entradaTeclado;
    } //cierre pedir entrada
   
   public String getEntradaDeTeclado () {
    return entradaDeTeclado; } //Cierre del método getEntrada

   

gRACIAS
« Última modificación: 30 de Mayo 2017, 21:39 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ejercicio CU00667B
« Respuesta #1 en: 06 de Abril 2017, 19:04 »
Hola Luis Fdo.

No sigues lo que pide el enunciado, pide una clase CantanteFamoso, ListaCantantesFamosos y una clase Test.

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

No creaste la clase CantanteFamoso, te dejo un ejemplo del ejercicio completo.

https://www.aprenderaprogramar.com/foros/index.php?topic=2889.msg13137#msg13137

Saludos. ;D

 

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