Autor Tema: Java error cannot find symbol - method iterator() no me reconoce método CU00667B  (Leído 3467 veces)

gary

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Respuesta al ejercicio CU00667B del tutorial de programación Java con BlueJ.

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).
Por que mi codigo no funciona, me marca error en class Test, linea 20:         Iterator <CantanteFamoso> it=lista.iterator();
cannot find symbol - method iterator()
No me reconoce el metodo iterator().


class ListaCantantesFamosos

Código: [Seleccionar]
import java.util.Iterator;
import java.util.ArrayList;
public class ListaCantantesFamosos
{
    // instance variables - replace the example below with your own

    private ArrayList <CantanteFamoso> lista;
   
    /**
     * Constructor for objects of class ListaCantantesFamosos
     */
    public ListaCantantesFamosos()
    {
        // initialise instance variables
        this.lista=new ArrayList <CantanteFamoso> ();
    }
   

    /**
     * An example of a method - replace this comment with your own
     *
     * @param  y   a sample parameter for a method
     * @return     the sum of x and y
     */
    public void addCantante(CantanteFamoso cantante){
        lista.add(cantante);
    }
}

class CantanteFamoso

Código: [Seleccionar]
import java.util.Iterator;
import java.util.ArrayList;
public class CantanteFamoso
{
    // instance variables - replace the example below with your own
    private String nombre;
    private String discoMasVendido;

    /**
     * Constructor for objects of class CantanteFamoso
     */
    public CantanteFamoso()
    {
        // initialise instance variables
        this.nombre="";
        this.discoMasVendido="";
    }
   
    public CantanteFamoso(String nombre, String disco)
    {
        // initialise instance variables
        this.nombre=nombre;
        this.discoMasVendido=disco;
    }

    /**
     * An example of a method - replace this comment with your own
     *
     * @param  y   a sample parameter for a method
     * @return     the sum of x and y
     */
   
    public void setNombre(String nombre){
        this.nombre=nombre;
       
    }
   
    public void setDiscoMasVendido(String disco){
        this.discoMasVendido=disco;
       
    }
   
    public String getNombre(){
        return this.nombre;
       
    }
   
    public String getDiscoMasVendido(){
        return this.discoMasVendido;
       
    }
}

class Test

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

public class Test
{
    public static void main (String [ ] Args){
        ListaCantantesFamosos lista=new ListaCantantesFamosos ();
       
        CantanteFamoso cantante=new CantanteFamoso();
        cantante.setNombre("Will");
        cantante.setDiscoMasVendido("Yigui yigui gure");
        lista.addCantante(cantante);
       
        CantanteFamoso cantante2=new CantanteFamoso();
        cantante2.setNombre("Chayane");
        cantante2.setDiscoMasVendido("Las mañanitas");
        lista.addCantante(cantante2);
       
       
        Iterator <CantanteFamoso> it=lista.iterator();     [b]//Aqui esta mi error[/b]
        CantanteFamoso singer;
        while(it.next()){
            singer=it.next();
            System.out.println("Cantante: "+singer.getNombre()+" Disco mas vendido: "+singer.getDiscoMasVendido());

        }
       
    }
}


« Última modificación: 16 de Junio 2017, 19:42 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas gary.

El problema está en que estás usando el método iterator() sobre un objeto ListaCantantesFamosos que contiene una lista, pero no es una lista, para que tu código funcione podrías añadir un método en la clase ListaCantantesFamosos que devuelva la lista, algo como esto:
Código: [Seleccionar]
public ArrayList<CantanteFamoso> getLista() {
return lista;
}


Y en la clase test el código quedaría así:
Código: [Seleccionar]
import java.util.Iterator;

public class Test {
public static void main (String [ ] Args){
        ListaCantantesFamosos lista = new ListaCantantesFamosos ();
       
        CantanteFamoso cantante=new CantanteFamoso();
        cantante.setNombre("Will");
        cantante.setDiscoMasVendido("Yigui yigui gure");
        lista.addCantante(cantante);
       
        CantanteFamoso cantante2=new CantanteFamoso();
        cantante2.setNombre("Chayane");
        cantante2.setDiscoMasVendido("Las mañanitas");
        lista.addCantante(cantante2);
       
       
        Iterator <CantanteFamoso> it = lista.getLista().iterator();     
        CantanteFamoso singer;
        while(it.hasNext()){
            singer=it.next();
            System.out.println("Cantante: "+singer.getNombre()+" Disco mas vendido: "+singer.getDiscoMasVendido());

        }
       
    }
}

Saludos. ;D


gary

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Muchas gracias Pedro, ahora si puedo llamar al método iterator(), pero podrías aclararme un poco mas mi error, sobre todo la parte que decis: "...estás usando el método iterator() sobre un objeto ListaCantantesFamosos que contiene una lista, pero no es una lista,..." a que te referís con que no es una lista.
Saludos y muchas gracias.

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
En este caso, la lista o colección es un atributo de la clase ListaCantantesFamosos, por eso digo que el objeto que tu creas en la clase Test en esta línea ...
Código: [Seleccionar]
ListaCantantesFamosos lista = new ListaCantantesFamosos ();no es una lista o colección, es un objeto que contiene un ArrayList. La lista o colección es la que creas en la clase ListaCantantesFamosos en esta línea ...
Código: [Seleccionar]
private ArrayList <CantanteFamoso> lista;
Por eso en el código que te puse lo que hace es recuperar el contenido de esa lista y luego aplicarle el método iterator() en esta otra línea ...
Código: [Seleccionar]
Iterator <CantanteFamoso> it = lista.getLista().iterator(); 
Espero te valga como explicación.

Saludos. ;D



gary

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Muchas gracias Pedro, por tomarte el tiempo de responder a mi pregunta, y si, si me queda claro ahora, muchas gracias.
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".