Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: maxplanck en 05 de Marzo 2017, 20:04

Título: error que me da BlueJ es cannot find symbol- method iterator() CU00688B
Publicado por: maxplanck en 05 de Marzo 2017, 20:04
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
Título: Re:Me estoy volviendo loco con el ejercicio CU00688B .
Publicado por: pedro,, 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
Título: Re:Me estoy volviendo loco con el ejercicio CU00688B .
Publicado por: maxplanck 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.