Autor Tema: Java. Clase que simula una lista. Tipo Iterator api Java. Ejercicio CU00667B#  (Leído 3146 veces)

barriway

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 20
    • Ver Perfil
Aquí os dejo una posible solución del ejercicio de la clase iterador CU00667B

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

public class EntradaTeclado{

    private String entrada;
    Scanner scaner;
   
    public EntradaTeclado(){
        entrada="";
        scaner = new Scanner(System.in);
    }

    public String getEntrada(){
        return entrada;
    }

    public void setEntrada(){
        entrada = scaner.nextLine();
    }
}


Código: [Seleccionar]
public class CantanteFamoso{
   
    private String nombre;
    private String discoDeMasVentas;
   
    public CantanteFamoso(){
        nombre="";
        discoDeMasVentas="";
    }
   
    public CantanteFamoso(String nombre,String discoDeMasVentas){
        this.nombre=nombre;
        this.discoDeMasVentas=discoDeMasVentas;
    }
   
    public CantanteFamoso(CantanteFamoso cantanteFamoso){
        this.nombre=cantanteFamoso.getNombre();
        this.discoDeMasVentas=cantanteFamoso.getDiscoMasVentas();
    }
   
    public String getNombre(){
        return nombre;
    }
   
    public String getDiscoMasVentas(){
        return discoDeMasVentas;
    }
   
    public void setNombre(String nombre){
        this.nombre=nombre;
    }
   
    public void setDiscoMasVentas(String discoDeMasVentas){
        this.discoDeMasVentas=discoDeMasVentas;
    }
   
    public void visualizarCantante(){
        System.out.println("Nombre : "+nombre+", "+"Disco de mas vendido : "+discoDeMasVentas);
    }
         
}


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

public class ListaCantantesFamosos{

    private ArrayList<CantanteFamoso> listaCantantes;

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

    public ArrayList<CantanteFamoso> getLista(){
        return listaCantantes;
    }
   
    public CantanteFamoso getCantante(int posicion){
        if(posicion>=0 && posicion<listaCantantes.size()){
            return listaCantantes.get(posicion);
        }else{
            return null;
        }
    }

    public void addCantante(CantanteFamoso cantanteFamoso){
        listaCantantes.add(cantanteFamoso);
    }

    public void removeCantante(int posicion){
        if(posicion>=0 && posicion<listaCantantes.size()){
            listaCantantes.remove(posicion);
        }
    }

    public int getTamaño(){
        return listaCantantes.size();
    }
}


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

public class TestIterador{

    public static void main (String Arg[]){

        ListaCantantesFamosos listaCantantes = new ListaCantantesFamosos();
        listaCantantes.addCantante(new CantanteFamoso("Primer Cantante","Primer Disco"));
        listaCantantes.addCantante(new CantanteFamoso("Segundo Cantante","Segundo Disco"));

        System.out.println("Listado de cantantes famosos");
        Iterator<CantanteFamoso> iteradorCantante = listaCantantes.getLista().iterator();
        while(iteradorCantante.hasNext()){
            iteradorCantante.next().visualizarCantante();
        }

        EntradaTeclado entradaTeclado=new EntradaTeclado();
        do{
            CantanteFamoso nuevoCantante = new CantanteFamoso();
            System.out.print("Dame el nombre de otro cantante famoso : ");entradaTeclado.setEntrada();
            nuevoCantante.setNombre(entradaTeclado.getEntrada());
            System.out.print("Dame el nombre de su disco mas vendido : ");entradaTeclado.setEntrada();
            nuevoCantante.setDiscoMasVentas(entradaTeclado.getEntrada());
            listaCantantes.addCantante(nuevoCantante);

            System.out.println("Listado de cantantes famosos");
            iteradorCantante = listaCantantes.getLista().iterator();
            while(iteradorCantante.hasNext()){
                iteradorCantante.next().visualizarCantante();
            }
           
             System.out.print("¿Desea introducir otro cantante?(S/N) : ");entradaTeclado.setEntrada();
           
        }while(entradaTeclado.getEntrada().equals("S"));
    }
}

Un saludo.
« Última modificación: 30 de Octubre 2015, 09:03 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2630
    • Ver Perfil
Re:Java. Tipo Iterator api Java. Ejercicio CU00667B
« Respuesta #1 en: 14 de Julio 2015, 19:44 »
Hola barriway, tu código es correcto y está bien planteado, cumple con lo que se pedía en el ejercicio.

No es necesario pues no se pedía, pero para que lo tengas en cuenta si en vez de usar while(entradaTeclado.getEntrada().equals("S")); usas while(entradaTeclado.getEntrada().equalsIgnoreCase("S")); te admitirá como equivalentes la s y la S (es decir, admitirá tanto mayúsculas como minúsculuas).

Salu2

RaGa

  • Moderador Global
  • Intermedio
  • *******
  • APR2.COM
  • Mensajes: 234
    • Ver Perfil
Re:Java. Tipo Iterator api Java. Ejercicio CU00667B
« Respuesta #2 en: 14 de Julio 2015, 19:49 »
Hola:

Por mi parte haría una observación que sería la siguiente:

Líneas como la siguiente, son válidas ya que el complidor no señala errores

Código: [Seleccionar]
nombre="";
pero lo correcto sería declarar el objeto con su ámbito y con su tipo.
Para este caso lo apropiado sería:

Código: [Seleccionar]
private String nombre="";
No quiero dejar de destacar la buena organización de cada una de las clases, y sobre todo el código de la clase main. Veo que utilizas objetos anónimos correctamente (lo cual se verá más adelante en el curso).
Excelente uso de los métodos del objeto tipo Iterator.


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