Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Objeto ArrayList Es seteado y Vuelve a Null

Amigos buen dia,

Estoy realizando un programa básico en java para poder aprender correctamente la OOP sin embargo se me presenta un problema.
básicamente el programa consiste en:
1. crear una cubeta de huevos a la que le setteo los valores
2. añado a la cubeta huevos

---
Error;
al comprar la cubeta aparecen los valores correctos, los huevos aun no los he comprado
Cubeta{material=carton, color=amarilla, precio=3000.0, listahuevos=[]}
Al añadir el huevo los valores del ArrayList queda nulos, no se porque su ayuda por favor
Cubeta{material=null, color=null, precio=null, listahuevos=[cubeta.Huevo@4554617c]}

Como llegar al error:
1. opcion Menu cubeta
2. opcion comprar cubeta
3. opcion volver
4. opcion menu Huevos
5 opcion Añadir Huevo.

******Huevo.java***

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package cubeta;

import java.util.ArrayList;

/**
*
* @author jumarrod
*/
public class Huevo {
private String tipo;
private Integer cantidadYemas;
private String color;
private Double precio;
private String tamano;

public Huevo(){
}

public Huevo(String tipo, Integer cantidad_yemas, String color, Double precio, String tamano) {
this.tipo = tipo;
this.cantidadYemas = cantidadYemas;
this.color = color;
this.precio = precio;
this.tamano = tamano;
}

public String getTipo() {
return tipo;
}

public void setTipo(String tipo) {
this.tipo = tipo;
}

public Integer getCantidadYemas() {
return cantidadYemas;
}

public void setCantidad_yemas(Integer cantidadyemas) {
this.cantidadYemas = cantidadYemas;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public Double getPrecio() {
return precio;
}

public void setPrecio(Double precio) {
this.precio = precio;
}

public String getTamano() {
return tamano;
}

public void setTamano(String tamano) {
this.tamano = tamano;
}

}
*******************

**Tienda.java******

package cubeta;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
*
* @author jumarrod
*/
public class Tienda {
//instanciando la clase en el nivel superior la puedo utilizar en cualquier parte del codigo
//las clases debe tener constructor por defecto.
Cubeta cub1 = new Cubeta();
Huevo huevo1 = new Huevo();
List<Huevo> listahuevos = new ArrayList<>();

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

//lista de cubetas

//Menu de opciones
Scanner sc = new Scanner(System.in);
Boolean salir = false;
int opcion;

while(!salir){
System.out.println("1. MENU CUBETA");
System.out.println("2. MENU HUEVOS");
System.out.println("3. TIENDA");
System.out.println("4. SALIR");

System.out.println("Escribe una de las opciones");

Tienda tienda = new Tienda();
opcion = sc.nextInt();
switch(opcion){
case 1:
System.out.println("1. ***********MENU CUBETA*************");
tienda.menuCubeta();
break;
case 2:
System.out.println("2. ***********MENU HUEVOS*************");
tienda.menuHuevos();
break;
case 3:
System.out.println("3. *************MENU TIENDA************");
tienda.menuTienda();
break;
case 4:
salir = true;
break;
default:
System.out.println("Solo números entre 1 y 4");
}

}

//fin Menu de opciones


//listaHuevos.add(new Huevo("Gallina", 1, "blanco", 300.0 ,"Mediano"));

/*This is how elements should be added to the array list*/

}


public void menuCubeta(){
Scanner sc = new Scanner(System.in);
Boolean salir = false;
// ArrayList<String> listahuevos = new ArrayList<String>();

int opcion;

while(!salir){
System.out.println("1. COMPRAR CUBETA");
System.out.println("2. VACIAR CUBETA");
System.out.println("3. <--VOLVER");

System.out.println("Escribe una de las opciones");

// Tienda tienda = new Tienda();
opcion = sc.nextInt();
switch(opcion){
case 1:
System.out.println("1. COMPRAR CUBETA");
//cub1 = new Cubeta("Carton","amarilla",3000.00,listahuevos);

cub1.setColor("amarilla");
cub1.setMaterial("carton");
cub1.setPrecio(3000.0);
cub1.setListahuevos(listahuevos);
// cub1.comprarCubeta(cub1);


System.out.println(cub1.toString());

// tienda.menuCubeta();
break;
case 2:
System.out.println("2. VACIAR CUBETA");
break;
case 3:
salir = true;
break;
default:
System.out.println("Solo números entre 1 y 3");
}

}



}


//Menu Huevos


public void menuHuevos(){
Scanner sc = new Scanner(System.in);
Boolean salir = false;
int opcion;

while(!salir){
System.out.println("1. AÑADIR HUEVO");
System.out.println("2. BUSCAR HUEVO");
System.out.println("3. ELIMINAR HUEVO");
System.out.println("4. CONTAR HUEVOS");
System.out.println("5. VER LISTA DE HUEVOS");
System.out.println("6. BUSCAR X PRECIO");
System.out.println("7. BUSCAR X TIPO");
System.out.println("8. <--VOLVER");


System.out.println("Escribe una de las opciones");

// Tienda tienda = new Tienda();
opcion = sc.nextInt();
switch(opcion){
case 1:
System.out.println("1. AÑADIR HUEVO");
// cub1.AgregarHuevo("Pato",1,"blanco",200.0,"Mediano"); //no quitar


//cub1.AgregarHuevo(tipo, opcion, color, Double.NaN, tamano);
//en lugar de utilizar el constructor por defecto utilizo los setters y getters
huevo1.setTipo("gallina");
huevo1.setPrecio(200.23);
huevo1.setColor("amarillo");
huevo1.setCantidad_yemas(2);

cub1.AgregarHuevo2(huevo1);
System.out.println(cub1.toString());
// tienda.menuCubeta();
break;
case 2:
System.out.println("2. BUSCAR HUEVO");
System.out.println(cub1.BuscarHuevo2(huevo1));
break;
case 3:
System.out.println("3. ELIMINAR HUEVO");
break;
case 4:
System.out.println("4. BUSCAR HUEVO");
break;
case 5:
System.out.println("5. BUSCAR HUEVO");
break;
case 6:
System.out.println("6. BUSCAR HUEVO");
break;
case 7:
System.out.println("7. BUSCAR HUEVO");
break;
case 8:
salir = true;
break;

default:
System.out.println("!!!!!!!!!!!!!Solo números entre 1 y 8");
}
}
}



//Menu Tienda

public void menuTienda(){


Scanner sc = new Scanner(System.in);
Boolean salir = false;
int opcion;

while(!salir){
System.out.println("1. PROMOCIONES");
System.out.println("2. VER PRECIO - FACTURAR");
System.out.println("3. VOLVER");

System.out.println("Escribe una de las opciones");

// Tienda tienda = new Tienda();
opcion = sc.nextInt();
switch(opcion){
case 1:
System.out.println("1. PROMOCIONES");
// tienda.menuCubeta();
break;
case 2:
System.out.println("2. VER PRECIO FACTURAR");
break;
case 3:
salir = true;
break;
case 4:
break;
default:
System.out.println("!!!!!!!!!!!!Solo números entre 1 y 3");
}

}



}




}


/*
Huevo huevo1 = new Huevo("Gallina",1,"blanco",300.0,"Mediano");
Huevo huevo2 = new Huevo("Pato",1,"blanco",200.0,"Mediano");
Huevo huevo3 = new Huevo("Avestruz",1,"blanco",2000.0,"grande");
Huevo huevo4 = new Huevo("Codorniz",1,"cafe",100.0,"pequeño");
Huevo huevo5 = new Huevo("Cocodrilo",1,"camuflado",2500.0,"grande");
Huevo huevo6 = new Huevo("ornitorrinco",1,"blanco",2700.0,"grande");
Huevo huevo7 = new Huevo("iguana",1,"blanco con pecas",4000.0,"pequeno");
Huevo huevo8 = new Huevo("Pinguino",1,"blanco",4100.0,"mediano");
Huevo huevo9 = new Huevo("colibri",1,"blanco",5000.0,"pequeno");
Huevo huevo10 = new Huevo("trucha",1,"rosado",20.0,"pequeno");

*/

****************

*****Cubeta.java**********

package cubeta;


import java.util.ArrayList;
import java.util.List;

/**
*
* @author jumarrod
*/
public class Cubeta {
private String material;
private String color;
private Double precio;
private List<Huevo> listahuevos = new ArrayList<>();
Huevo huevo;


//constructor
public Cubeta() {
}

public Cubeta(String material, String color, Double precio, List<Huevo> listahuevos) {
this.material = material;
this.color = color;
this.precio = precio;
this.listahuevos = listahuevos;
}

public String getMaterial() {
return material;
}

public void setMaterial(String material) {
this.material = material;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public Double getPrecio() {
return precio;
}

public void setPrecio(Double precio) {
this.precio = precio;
}

public List<Huevo> getListahuevos() {
return listahuevos;
}

public void setListahuevos(List<Huevo> listahuevos) {
this.listahuevos = listahuevos;
}


@Override
public String toString() {
return "Cubeta{" + "material=" + material + ", color=" + color + ", precio=" + precio + ", listahuevos=" + listahuevos + '}';
}

//no quitar
// public void AgregarHuevo(String tipo, Integer cantidad_yemas, String color, Double precio, String tamano){
// huevo = new Huevo(tipo, cantidad_yemas, color, precio, tamano);
// listahuevos.add(huevo);
// }


// public void comprarCubeta(Cubeta cubeta){
// cubeta.toString();
// }

public void AgregarHuevo2(Huevo huevo){
listahuevos.add(huevo);
}

public void EliminarHuevo2(Huevo huevo){
listahuevos.remove(huevo);
}

public int BuscarHuevo2(Huevo huevo){
int i;
for (i=0; i<= listahuevos.size(); i++){
i=listahuevos.indexOf(huevo);
}
return i;
}

public void vaciarCubeta(){
listahuevos.clear();
}


//
}
***********

Gracias saludos

enero 21, 2018 | Unregistered CommenterJulian M

Guenas.

He estado mirando por encima el código y no acabo de entender tu diseño.

Tienes un objeto Tienda que se crea cada vez que pasas por el menú principal. Creo yo que solo debería existir una única Tienda que se crea al iniciar la aplicación y se mantiene vivo

Tienes un ArrayList de huevos en el objeto Tienda y otro en el objeto Cubeta. Vas pasando una lista de huevos arriba y abajo. La lista de huevos solo debería estar en la cubeta. En todo caso la tienda lo que debería tener es una lista de cubetas.

Espero que te sea útil lo que te he comentado.
Un saludo,
Paposo

enero 24, 2018 | Unregistered CommenterPaposo