Autor Tema: error que me da BlueJ es cannot find symbol- method iterator() CU00688B  (Leído 2382 veces)

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Buenas. Llevo aquí 3 días enfrascado con este ejercicio CU00688B del curso básico de Java y un fallo de compilación tonto que no consigo resolver  :P. Debe de ser un error básico pero no doy con él.

El error que me da BlueJ es cannot find symbol- method iterator() y las clases afectadas son bastante simples. No sé que estoy haciendo mal pues los tipos listaEnvio o nuevoEnvio los declaro como ArrayList y he importado java.util.*. He recurrido a dos objetos por que he intentado crear el tipo Iterator de dos maneras diferentes. Una en la clase EnvioDeProducto y otra en la clase TestHerencia4 pero no me ha servido de nada. Aquí os dejo las dos clases (la clase test está sin rematar):

Clase EnvioDeProducto:
Código: [Seleccionar]
import java.util.*;
public class EnvioDeProductos {
   
private List<Producto> listaEnvio;

public EnvioDeProductos () {
    listaEnvio = new ArrayList<Producto>();
}

public void addProducto (Producto producto){
    listaEnvio.add(producto);
}

public Producto getProducto (int pos) {
   return listaEnvio.get(pos);
}

public int getSize (){
    return listaEnvio.size();
}

public Iterator envioIterator (EnvioDeProductos listaEnvio) {
    Iterator<Producto> it = listaEnvio.iterator();
    return it;
}

}

Clase TestHerencia4:

Código: [Seleccionar]
import java.util.*;
public class TestHerencia4   {
    public static void main (String [] Args) {
        EnvioDeProductos nuevoEnvio = new EnvioDeProductos();
       
        ProductoFresco cosa1 = new ProductoFresco ();
        nuevoEnvio.addProducto(cosa1);
        ProductoFresco cosa2 = new ProductoFresco ();
        nuevoEnvio.addProducto(cosa2);
        ProductoRefrigerado cosa3 = new ProductoRefrigerado ();
        nuevoEnvio.addProducto(cosa3);
        ProductoRefrigerado cosa4 = new ProductoRefrigerado ();
        nuevoEnvio.addProducto(cosa4);
        ProductoRefrigerado cosa5 = new ProductoRefrigerado ();
        nuevoEnvio.addProducto(cosa5);
        CongeladoAgua cosa6 = new CongeladoAgua ();
        nuevoEnvio.addProducto(cosa6);
        CongeladoAgua cosa7 = new CongeladoAgua ();
        nuevoEnvio.addProducto(cosa7);
        CongeladoAire cosa8 = new CongeladoAire ();
        nuevoEnvio.addProducto(cosa8);
        CongeladoAire cosa9 = new CongeladoAire ();
        nuevoEnvio.addProducto(cosa9);
        CongeladoNitrogeno cosa10 = new CongeladoNitrogeno ();
        nuevoEnvio.addProducto(cosa10);
       
        Calendar fechaEnv = Calendar.getInstance();
        Calendar fechaCad = Calendar.getInstance();
       
       
        fechaEnv.set(2017,10,21);
        cosa1.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,22);
        cosa2.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,23);
        cosa3.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,24);
        cosa4.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,25);
        cosa5.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,26);
        cosa6.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,27);
        cosa7.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,28);
        cosa8.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,29);
        cosa9.setFechaEnvasado(fechaEnv);
        fechaEnv.set(2017,10,30);
        cosa10.setFechaEnvasado(fechaEnv);
       
       
       
        fechaCad.set(2018,10,22);
        cosa1.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa2.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa3.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa4.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa5.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa6.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa7.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa8.setFechaCaducidad(fechaCad);
        fechaCad.set(2018,10,22);
        cosa9.setFechaCaducidad(fechaCad);
        fechaCad.set(2087,10,22);
        cosa10.setFechaCaducidad(fechaCad);
       
     
        cosa1.setNumLote(0001);
        cosa2.setNumLote(0002);
        cosa3.setNumLote(0003);
        cosa4.setNumLote(0004);
        cosa5.setNumLote(0002);
        cosa6.setNumLote(0001);
        cosa7.setNumLote(0002);
        cosa8.setNumLote(0003);
        cosa9.setNumLote(0001);
        cosa10.setNumLote(0041);
       
        cosa1.setPaisOrigen("Chiquitistán");
        cosa2.setPaisOrigen("Bananistán");
        cosa3.setPaisOrigen("La Gila");
        cosa4.setPaisOrigen("Trumpellot");
        cosa5.setPaisOrigen("Camelot");
        cosa6.setPaisOrigen("Camelot");
        cosa7.setPaisOrigen("Bananistán");
        cosa8.setPaisOrigen("La Gila");
        cosa9.setPaisOrigen("Trumpellot");
        cosa10.setPaisOrigen("Chiquitistán");
       
        cosa3.setCodigoOSA("co003");
        cosa4.setCodigoOSA("co004");
        cosa5.setCodigoOSA("co005");
       
        cosa3.setTemRecomendada(5.5);
        cosa4.setTemRecomendada(4);
        cosa5.setTemRecomendada(2.5);
        cosa6.setTemRecomendada(-5.5);
        cosa7.setTemRecomendada(-4);
        cosa8.setTemRecomendada(-2.5);
        cosa9.setTemRecomendada(-20.5);
        cosa10.setTemRecomendada(-10);
       
        cosa6.setSalinidad(4);
        cosa7.setSalinidad(8.5);
       
        cosa8.setNitro(25);
        cosa8.setOxi(20);
        cosa8.setDiox(30);
        cosa8.setVapor(20);
        cosa9.setNitro(10);
        cosa9.setOxi(20);
        cosa9.setDiox(30);
        cosa9.setVapor(40);
       
        cosa10.setMetodo("Lento");
        cosa10.setTiempoExposicion(240);
       
        cosa1.datosFresco("cosa1");       
        cosa2.datosFresco("cosa2");     
        //cosa3.datosProducto("cosa3");
        //cosa3.datosFrio("cosa3");
        cosa3.datosRefrigerado("cosa3");
        //cosa4.datosProducto("cosa4");
        //cosa4.datosFrio("cosa4");
        cosa4.datosRefrigerado("cosa4");
        //cosa5.datosProducto("cosa5");
        //cosa5.datosFrio("cosa5");
        cosa5.datosRefrigerado("cosa5");
        //cosa6.datosProducto("cosa6");
        cosa6.datosAgua("cosa6");
        //cosa6.datosFrio("cosa6");
        //cosa7.datosProducto("cosa7");
        cosa7.datosAgua("cosa7");
        //cosa7.datosFrio("cosa7");
        //cosa8.datosProducto("cosa8");
        cosa8.datosAire("cosa8");
        //cosa8.datosFrio("cosa8");
        //cosa9.datosProducto("cosa9");
        cosa9.datosAire("cosa9");
       // cosa9.datosFrio("cosa9");
        //cosa10.datosProducto("cosa10");
        cosa10.datosNitrogeno("cosa10");
        //cosa10.datosFrio("cosa10");
       
        System.out.println("El envío se compone de " + nuevoEnvio.getSize() + " artículos:");
        Iterator<Producto> it = nuevoEnvio.iterator();
        while (it.hasNext()) {
           System.out.println("El artículo " + it.next()+ " tiene las siguientes características:");
           it.next().datosProducto(it.next().toString());

    }
}
}

Gracias por vuestros comentarios. Saludos
« Última modificación: 14 de Mayo 2017, 19:20 por Alex Rodríguez »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Me estoy volviendo loco con el ejercicio CU00688B .
« Respuesta #1 en: 07 de Marzo 2017, 09:40 »
Hola maxplanck.

Creo que tienes mal planteado el ejercicio.

Desde la clase test haces esto:
Código: [Seleccionar]
Iterator<Producto> it = nuevoEnvio.iterator();Y nuevoEnvio no es una lista así que no funcionará.

Creo que lo más fácil y adecuado sería que en la clase EnvioDeProductos que es donde creas  una lista creases también un método que se encargue de mostrar el contenido de la lista y no intentar devolver el contenido del método iterartor.

Prueba con estos enlaces haber si te pueden ayudar:

https://www.aprenderaprogramar.com/foros/index.php?topic=2959.msg13389#msg13389

https://www.aprenderaprogramar.com/foros/index.php?topic=3561.msg15466#msg15466

Saludos. ;D

maxplanck

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Re:Me estoy volviendo loco con el ejercicio CU00688B .
« Respuesta #2 en: 07 de Marzo 2017, 19:25 »
Hola de nuevo pedro,, y gracias por tu respuesta. Tengo que repasar las bases más a fondo (este parón no me ha sentado bien  ;D) . Ahora que me doy cuenta del error tan básico que he cometido, esto es, confundir los métodos del tipo  EnvioDeProducto con los de un tipo ArrayList  es para hacérselo mirar pero es la desesperación lo que me lleva a no saber donde estoy porque esta clase EnvioDeProductos original también me daba fallo en el método iterator()...me harté de probar cosas y acabé liándola.

Clase EnvioDeProductos primaria:
Código: [Seleccionar]
import java.util.*;
public class EnvioDeProductos {
   
private List<Producto> listaEnvio;

public EnvioDeProductos () {
    listaEnvio = new ArrayList<Producto>();
}

public void addProducto (Producto producto){
    listaEnvio.add(producto);
}

public Producto getProducto (int pos) {
   return listaEnvio.get(pos);
}

public int getSize (){
    return listaEnvio.size();
}

public void mostrarDatos (EnvioDeProductos listaEnvio/**GRAN CAGADA**/) {
    Iterator<Producto> it = listaEnvio.iterator();
     while (it.hasNext()) {
           System.out.println("El artículo " + it.next()+ " tiene las siguientes características:");
           it.next().datosProducto(it.next().toString());

    }
}

}


Me acabo de dar cuenta de mi verdadero error y edito el post para aclararme a mí mismo lo que he hecho. En el método para iterar he pusto como argumento (EnvioDeProducto listaEnvio) algo completamente equivocado y además totalmente innecesario. Gracias por hacérmelo ver.
« Última modificación: 07 de Marzo 2017, 20:12 por maxplanck »

 

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