Autor Tema: CU00667B - Tipo Iterator - Método iterator no encontrado en la clase Test  (Leído 3059 veces)

LPM

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 35
    • Ver Perfil
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=633:tipo-iterator-api-java-ejemplo-error-javautilconcurrent-modificationexception-resumen-bucles-cu00667b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Hola.

Arreglé el problema que tenía. Me quedó así el ejercicio.

Código: [Seleccionar]
public class CantanteFamoso
{
    private String nombre;
    private String discoMasVendido;
   
    public CantanteFamoso(String nombre,String disco){
        this.nombre=nombre;
        discoMasVendido=disco;
    }
   
    public void setNombre(String nombre){this.nombre=nombre;}
    public void setDisco(String disco){discoMasVendido=disco;}
   
    public String getNombre(){return nombre;}
    public String getDisco(){return discoMasVendido;}
}

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

public class ListCantantesFamosos
{
    private ArrayList<CantanteFamoso>listaCantantesFamosos;
   
    public ListCantantesFamosos(){
        listaCantantesFamosos=new ArrayList<CantanteFamoso>();
    }
   
    public void addCantante(CantanteFamoso cantante){listaCantantesFamosos.add(cantante);}

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

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

public class TestListCantantesFamosos
{
    private ListCantantesFamosos testLista;
    private CantanteFamoso cantante1;
    private CantanteFamoso cantante2;
   
    public TestListCantantesFamosos(){
        cantante1=new CantanteFamoso("Rata","Blanca");
        cantante2=new CantanteFamoso("Mago","De Oz");
        testLista=new ListCantantesFamosos(){{addCantante(cantante1);addCantante(cantante2);}};
    }

    private void mostrarCantantesIt(){
        Iterator<CantanteFamoso> listaIt=testLista.getLista().iterator();
        CantanteFamoso tmpCantante;
        while (listaIt.hasNext()){
            tmpCantante=listaIt.next();
            System.out.println("Cantante "+tmpCantante.getNombre()+" con su disco "+tmpCantante.getDisco()+" mas vendido.");
        }
    }
   
    private void addCantanteTeclado(){
        Scanner teclado=new Scanner (System.in);
        System.out.print("Escriba su nombre: ");
        String nombre=teclado.nextLine();
        System.out.print("Su disco mas vendido?");
        String disco=teclado.nextLine();
        CantanteFamoso cantanteAgregado=new CantanteFamoso(nombre,disco);
        testLista.addCantante(cantanteAgregado);
    }
   
   
    public static void main (String []args){
        Scanner tecladoMain=new Scanner(System.in);
        TestListCantantesFamosos testLista1=new TestListCantantesFamosos();
        System.out.println("Los cantantes en la lista actual son:");
        testLista1.mostrarCantantesIt();
        System.out.println("Ahora agregue un cantante.");
        testLista1.addCantanteTeclado();
        int intentos=0;
        do{System.out.print("Agregar otro cantante? Si/No: ");
           String respuesta=tecladoMain.next();
           if(respuesta.equalsIgnoreCase("si")){
                intentos=0;
                testLista1.addCantanteTeclado();
           }else if(respuesta.equalsIgnoreCase("no")){
                System.out.print("Ok.");
                intentos=3;
           }else{System.out.println("Escriba si o no para continuar");
                  intentos++;
                  if (intentos==3){System.out.println("Ha intentado agregar un cantantes varias veces sin éxito");
                                 break;
                                  }
           }
        }   
        while(intentos<3);
        System.out.println("Ahora los cantantes de la lista actual son: ");
        testLista1.mostrarCantantesIt();
    }
}

« Última modificación: 03 de Diciembre 2014, 00:26 por LPM »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:CU00667B - Tipo Iterator - Método iterator no encontrado en la clase Test
« Respuesta #1 en: 04 de Diciembre 2014, 12:49 »
Hola, aunque tu código funcione te recomendaría que cambiaras o mejoraras algunas cosas:

En la clase TestListCantantesFamosos defines atributos y un constructor. Mejor no hacerlo así, sino simplemente dejarla con el método main. Esta clase sirve para conducir el programa, por tanto no tiene mucho sentido que contenga datos ni constructores.

El comienzo de esta clase podría ser algo así:

   public static void main(String[] args) {
        ListaCantantesFamosos lista1 = new ListCantantesFamosos();

Y a partir de ahí empezar a trabajar...

Otra cosa: en la clase TestListCantantesFamosos declaras private void mostrarCantantesIt() y addCantanteTeclado()

Hay cosas mal planteadas: ¿mostrarCantantesIt() es un método para mostrar cantantes de una lista? Entonces este método debe estar en la clase ListCantantesFamosos. Cada clase se ocupa de sus cosas.


El método addCantanteTeclado() lo mismo: si es un método para añadir un teclado a una lista debe ir en la clase de lista, no en otra clase.

Todo esto nos resume que un código puede funcionar pero no podremos decir que está bien diseñado si no se siguen las pautas de la programación orientada a objetos.

Saludos!!!
Responsable de departamento de producción aprenderaprogramar.com

 

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