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