Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - evuz

Páginas: [1]
1
Aprender a programar desde cero / Re:Ejercicio CU00688B
« en: 08 de Agosto 2014, 18:40 »
Edité el comentario de antes, ya encontré el error, me autocito

Edito: encontre el gazapo, en la línea 38 estaba definiendo
Código: [Seleccionar]
EnvioDeProductos tmpE;que luego inicializaba el objeto en la línea 63 y este era el objecto que yo modificaba y agregaba a la lista. Pues he tenido que definirlo e inicializarlos a la vez en línea 63, para que al salir del if se destruya el objeto.

Gracias por la ayuda!

Dongo, lo que tu comentas creo que no debería afectar. Ya que ese objeto sólo lo utilizo para crear la lista de los productos por tipo y una vez que salgo de ese método se elimina ese objeto ¿cierto?

2
Aprender a programar desde cero / Re:Ejercicio CU00688B
« en: 08 de Agosto 2014, 16:32 »
Muchas gracias por la explicación dongo. No te preocupes si salen post más largos de la cuenta se leen y se entienden mejor, creo que tengo algo más claro cuando usar static.

Lo que comentas en la edición es listaEnvio de la clase EnvioProducto, esa trabaja bien. El problema está en la listaEnvios de GestionProductos. Perdón por los nombres practicamente iguales.

Como bien comentas, en EnvioProductos voy creando una lista con productos que se van añadiendo a esa lista. Una vez que es envío se valida. En la clase GestionProductos en la línea 65 si el envío está validado este se añade a listaEnvios.
El problema está en que fijate en la ejecución que puse antes.
Empiezo a crear una lista, le añado productos, la valido y salgo. Aparece:
Código: [Seleccionar]
Envio añadido
En la lista tenemos1 envios

Luego hago el mismo procedimiento, creo un nuevo envío, lo valido y cuando salgo aparece de nuevo
Código: [Seleccionar]
Envio añadido
En la lista tenemos1 envios
Es decir, o no se añade este último elemento a listaEnvios(GestionProductos) o este último elemento sobreescribe al anterior que estaba. Con el debugger veo que lo que hace es la segunda opción se sobreescribe el elemento.

PD: No se si al modificar los post se pierden los archivos adjunto o volví a olvidar adjuntar los ficheros corrigiendo los static

Edito: encontre el gazapo, en la línea 38 estaba definiendo
Código: [Seleccionar]
EnvioDeProductos tmpE;que luego inicializaba el objeto en la línea 63 y este era el objecto que yo modificaba y agregaba a la lista. Pues he tenido que definirlo e inicializarlos a la vez en línea 63, para que al salir del if se destruya el objeto.

Gracias por la ayuda!

3
Aprender a programar desde cero / Re:Ejercicio CU00688B
« en: 08 de Agosto 2014, 13:35 »
El tema de los static, está solucionado el problema venía en que sólo borré antes un static de las clases y al estar las demás clases como static lo requería. Así que algún static pondría en un primer momento que luego me empezó a tirar errores. Quitandolos todos sin problemas. Aunque creo que ahora tengo el problema de cuando poner static y cuando no ponerlos. Tendré que investigar algo más sobre ellos.

Sobre el problema que os comento, os copio la ejecución del código.

Código: [Seleccionar]
Bienvenido al sistema de gestión de productos
¿Con que clase de productos desea trabajar?
F - Productos frescos
R - Productos refrigerados
C - Productos congelados
E - Envios
EXIT - salir
Productos: e

Introduce un nombre para el envío
Primer Envio
¿Qué quieres haces?
A - Agregar productos al envio
D - Borra un producto del envío
V - Ver productos del envío
OK - Validamos el pedido
R - regresar al menú anterior
Accion: a

Estos son los Productos que tenemos en stock
Productos frescos
1 - Producto: Fresas
Fecha de caducidad: 8-8-14
Numero de lote: L-625
Fecha de envasado: 30-07-14
País de origen: Lepe/Huelva

2 - Producto: Pepinos
Fecha de caducidad: 12-8-14
Numero de lote:  J-2253
Fecha de envasado: 30-07-14
País de origen: Marruecos

¿Desea agregar un producto? (S/N) n

Productos refrigerados
1 - Producto: Queso tierno
Fecha de caducidad: 7-8-14
Numero de lote: HK-524
Codigo de supervision: 12345-M

2 - Producto: Yogur
Fecha de caducidad: 16-8-14
Numero de lote: R-123
Codigo de supervision: 725-P

¿Desea agregar un producto? (S/N) s
¿Qué producto desea añadir?: 1
Ha añadido al envio Queso tierno
¿Quiere añadir otro producto? (S/N): n

Productos congelados
1 - Producto: Merluza
Fecha de caducidad: 10-9-15
Numero de lote: B-159
Temperatura de congelación: -18.0

2 - Producto: Sepia
Fecha de caducidad: 31-10-14
Numero de lote: V-112
Temperatura de congelación: -14.0

¿Desea agregar un producto? (S/N) n

Usted tiene ha añadido al envio los siguientes artículos
Queso tierno

¿Qué quieres haces?
A - Agregar productos al envio
D - Borra un producto del envío
V - Ver productos del envío
OK - Validamos el pedido
R - regresar al menú anterior
Accion: v


Usted tiene ha añadido al envio los siguientes artículos
Queso tierno
Quiere ver los artículos con más detalles:(S/N) n

¿Qué quieres haces?
A - Agregar productos al envio
D - Borra un producto del envío
V - Ver productos del envío
OK - Validamos el pedido
R - regresar al menú anterior
Accion: r

¿Va a salir sin validar el envio, está seguro? (S/N): n
¿Está seguro de que desea validar este envío? (S/N): s

Envio añadido
En la lista tenemos1 envios
¿Con que clase de productos desea trabajar?
F - Productos frescos
R - Productos refrigerados
C - Productos congelados
E - Envios
EXIT - salir
Productos: e

Introduce un nombre para el envío
segundo envio
¿Qué quieres haces?
A - Agregar productos al envio
D - Borra un producto del envío
V - Ver productos del envío
OK - Validamos el pedido
R - regresar al menú anterior
Accion: a

Estos son los Productos que tenemos en stock
Productos frescos
1 - Producto: Fresas
Fecha de caducidad: 8-8-14
Numero de lote: L-625
Fecha de envasado: 30-07-14
País de origen: Lepe/Huelva

2 - Producto: Pepinos
Fecha de caducidad: 12-8-14
Numero de lote:  J-2253
Fecha de envasado: 30-07-14
País de origen: Marruecos

¿Desea agregar un producto? (S/N) s
¿Qué producto desea añadir?: 1
Ha añadido al envio Fresas
¿Quiere añadir otro producto? (S/N): n

Productos refrigerados
1 - Producto: Queso tierno
Fecha de caducidad: 7-8-14
Numero de lote: HK-524
Codigo de supervision: 12345-M

2 - Producto: Yogur
Fecha de caducidad: 16-8-14
Numero de lote: R-123
Codigo de supervision: 725-P

¿Desea agregar un producto? (S/N) n

Productos congelados
1 - Producto: Merluza
Fecha de caducidad: 10-9-15
Numero de lote: B-159
Temperatura de congelación: -18.0

2 - Producto: Sepia
Fecha de caducidad: 31-10-14
Numero de lote: V-112
Temperatura de congelación: -14.0

¿Desea agregar un producto? (S/N) n

Usted tiene ha añadido al envio los siguientes artículos
Fresas

¿Qué quieres haces?
A - Agregar productos al envio
D - Borra un producto del envío
V - Ver productos del envío
OK - Validamos el pedido
R - regresar al menú anterior
Accion: v


Usted tiene ha añadido al envio los siguientes artículos
Fresas
Quiere ver los artículos con más detalles:(S/N) n

¿Qué quieres haces?
A - Agregar productos al envio
D - Borra un producto del envío
V - Ver productos del envío
OK - Validamos el pedido
R - regresar al menú anterior
Accion: r

¿Va a salir sin validar el envio, está seguro? (S/N): n
¿Está seguro de que desea validar este envío? (S/N): s

Envio añadido
En la lista tenemos1 envios
¿Con que clase de productos desea trabajar?
F - Productos frescos
R - Productos refrigerados
C - Productos congelados
E - Envios
EXIT - salir
Productos:

He puesto una línea en la que dice en la lista tenemos X envios. Y se ve como al añadir el segundo envío aparece de nuevo:
Código: [Seleccionar]
En la lista tenemos1 envios
Vuelvo a subir el código sin los static y con esta línea añadida. listaEnvios, se gestiona desde la clase GestionProductos y se añaden los envios en el método gestionarProductos, concretamente por la línea 65.

Gracias a los dos, voy investigando con los static.

Edito: creo que he dado con el sentido de static, dongo al advertirme de donde sí debería de static creo que me ha abierto los ojos. Voy declarando por cada método
Código: [Seleccionar]
Interaccion interactuar = new Interaccion()

y partiendo de aquí, ya usaba los método de la clase Interaccion de esta forma
Código: [Seleccionar]
interactuar.mostrar(msg);
Pero si declaro los método de la clase Interaccion como static no necesito declarar el objeto interactuar, sino que puedo usar los métodos static de esta forma
Código: [Seleccionar]
Interaccion.mostrar(msg)
¿Estoy en lo cierto?

4
Aprender a programar desde cero / Re:Ejercicio CU00688B
« en: 08 de Agosto 2014, 12:15 »
Hola, he empezado a mirar el código y lo primero que me llama la atención es la aparición de métodos y atributos static en clases como GestionDeProductos y EnvioDeProductos, lo que no parece normal ¿Por qué estás utilizando static en estas clases?

He mirado lo que indicas de un error pero no sé cómo localizarlo: haz una ejecución del programa y cópiame lo que vas introduciendo hasta que te salta el error, de esa manera podré tratar de hacer la misma ejecución y así ver lo mismo que te ocurre a tí.

Saludos

Los método static los utilizo para invocarlos desde la misma clase, por ejemplo si en la clase GestionProductos desde el método gestionarProductos quiero invocar a el método removeProducto, uso
Código: [Seleccionar]
removeProducto();


Si no pongo static me salta un error, por ese motivo uso los método static. ¿Alguna forma de hacerlo más correcta?

El error no es una excepcion que salte. Es viendolo desde el debugger.
Si entro en enviar y añado un producto, lo valido y regreso al menú, este pedido debería de haberse añadido a listaEnvio. Si lo miramos con el debugger en listaEnvio se encuentra este envio. Pero si hacemos otro envio, agregamos un producto, lo validamos y regresamos al menú inicial. En el depurador se ve que en listaEnvio seguimos teniendo sólo un producto, que es el último que hemos creado y que ha sobreescrito al anterior.

Se puede ver cuando el programa ejecuta esta parte de código, incluido en la clase GestionProductos

Código: [Seleccionar]
public static void presentacion () {
        Interaccion interactuar = new Interaccion ();
        EnvioDeProductos tmpE;
        String producto = null;
       
        while (producto == null) {
            producto = interactuar.responder("¿Con que clase de productos desea trabajar?\n"
                                        + "F - Productos frescos\n"
                                        + "R - Productos refrigerados\n"
                                        + "C - Productos congelados\n"
                                        + "E - Envios\n"
                                        + "EXIT - salir\n"
                                        + "Productos: ", 0);
            interactuar.mostrar("");
            if (producto.toUpperCase().substring(0,1).equals("F")) {
                producto = "productos frescos";
                gestionarProductos(producto, listaFrescos);
            } else if (producto.toUpperCase().substring(0,1).equals("R")) {
                producto = "productos refrigerados";
                gestionarProductos(producto, listaRefrigerados);
            } else if (producto.toUpperCase().substring(0,1).equals("C")) {
                producto = "productos congelados";
                gestionarProductos(producto, listaCongelados);
            } else if (producto.toUpperCase().equals("EXIT")) {
                break;
            } else if (producto.toUpperCase().substring(0,1).equals("E")) {
                String tmpMsg = "Introduce un nombre para el envío";
                tmpE = new EnvioDeProductos(interactuar.responder(tmpMsg), listaFrescos, listaCongelados, listaRefrigerados);
                tmpE.gestionEnvios();
                if (tmpE.getValidacion()) {
                    listaEnvios.add(tmpE.getListaEnvio());
                    interactuar.mostrar("Envio añadido");
                }
                producto = null;
            } else {
                interactuar.mostrar("No ha seleccionado un producto correcto, vuelva a seleccionar\n"); 
                producto = null;
            }
        }
    }

Espero haberme explicado bien.

5
Aprender a programar desde cero / Re:Ejercicio CU00688B
« en: 08 de Agosto 2014, 11:19 »
Hola, el problema es que no veo el código ¡creo que olvidaste adjuntarlo!. Crea un archivo zip y dentro de él mete los archivos .java con el código. Luego en el editor del foro pulsa en Opciones Adicionales y adjunta el archivo, de esa manera podremos acceder al código. Otra opción es pegarlo usando el botón # del editor del foro entre las etiquetas [ code ] ... [ / code ] pero si es muy largo es preferible ponerlo como archivo adjunto como te he indicado. Salu2

Si, iba a adjuntar el archivo pero como siempre se me olvidó. Ya he subido el fichero .rar

Gracias por el aviso

6
Hola,

Estoy siguiendo el curso de programación en java pero este es el primer ejercicio que posteo por aquí. El ejercicio no es exactamente como se pide en el enunciado ya que no creo algunas subclases. El motivo de esto es que comencé a hacer el ejercicio y lo fui ampliando por mi cuenta y viendo lo que se iba pidiendo pues se me iban ocurriendo cosas.

Las clases que tengo son:
-Envio de productos
-GestionProductos
-Interaccion
-ListaDeProductos
-Productos
-ProductosFrescos
-ProductosCongelados
-ProductosRefrigerados
-TestProductos

Veréis que tengo un problema para continuar y es que en la clase GestionProductos se crea un ArrayList llamado listaEnvios y cuando me pongo a mirar con el depurador veo que cuando añado un envio a esa lista este borra el anterior que estaba en la posición
  • , sobreescribiendo el envío creado anteriormente. Pero la intención es que se vayan creando envíos y añadiendo a la lista para poder a posteriori visualizar todos los envíos realizados.

A ver si alguno puede echarle un vistazo al codigo y ver donde está el error, a parte de alguna que otra sugerencia tanto en el estilo del código como en el programa en sí.

Muchas gracias.
Un saludo

Páginas: [1]

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