Ayuda, obtener datos de Objetos en ArrayList

Iniciado por touchi, 27 Febrero 2015, 21:25 PM

0 Miembros y 1 Visitante están viendo este tema.

touchi

Ahí organice un poco el despelote, gracias por sus respuestas voy a ponerme a terminar el ejercicio en base a tu ejemplo. Espero salga todo bien, gracias por tomarse el tiempo de darme una mano.

Usuario Invitado

De nada, siempre es grato ser de ayuda. Dado que éste tema se ha extendido mucho, ante alguna duda nueva crea otro tema.

Saludos.

PD: Lee sobre el patrón MVC y aplícalo a tu proyecto.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

touchi

Vuelvo aquí con mas dudas, el código de la parte Reportes es algo así, gracias a Gus me ilumino. Lo que tengo en duda es.... en el código

Código (java) [Seleccionar]

public ReporteArticulo(ArrayList<Articulo> listaArticulos) {
       
    }
   
    public int[] getExistenciaTiposProductos(int tipo) {
        final int TODOS = -1;
        final int TIPO_1 = 0;
        final int TIPO_2 = 0;
        int tipo1cantidad = 0;
        int tipo2cantidad = 0;
        int requestCategoryExistences = 0;

        for(Articulo articulo : listaArticulos) {
            if(tipo != TODOS) {
                if(articulo.getTipo() == tipo) {
                    requestCategoryExistences++;
                }
            } else {
                if(articulo.getTipo() == TIPO_1)
                  tipo1cantidad++;
                if(articulo.getTipo() == TIPO_2)
                  tipo2cantidad++;
            }
        }
        if(tipo != TODOS)
            return new int[] { requestCategoryExistences };
        else
            return new int[] {tipo1cantidad, tipo2cantidad}; 
       
       
    }
   
   
   
     public Double getTotalDineroProductos() {
        Double montoTotal = 0d;
      for(Articulo articulo : listaArticulos) {
            montoTotal += articulo.getPrecio();
        }
        return montoTotal;
       

    }
   
     public Articulo getProductoMasCaro() {
        Articulo masCaro = listaArticulos.get(0);

        for(Articulo articulo : listaArticulos) {
            if(articulo.getPrecio()> masCaro.getPrecio())
                masCaro = articulo;
        }

        return masCaro;
       
    }


Como lo hizo Gus comparaba los tipos según los datos ingresados un poco mas arriba, ahora.... yo a los datos los tengo en un ArrayList en donde estan TODOS los datos "codigo, tipo, precio,etc" si uso el codigo tal cual pero llamando a los datos del Array estaría recorriendo siempre el mismo Articulo? debería usar un interator?


Usuario Invitado

No, la estructura que use para recorrer la lista de productos se llama foreach. Se usa principalmente cuando solo quieres recorrer para extraer inormacion y no para realizar operaciones con los elementos de la lista. Para lo otro se usa un iterator o un for común.

El foreach recorre elemento por elemento y el elemento actual es representado por la variable ProductVO (obviamente es necesario que sea del tipo de objeto que almacena la lista):
Código (java) [Seleccionar]
for(ProductVO product : productsList)
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

touchi

Debuggeando el programa nos da el error que esta detallado abajo, pero checkeando el tamaño de  "listaArticulos" (usando size(); en el arrayList) y efectivamente devuelve datos. 


Código (java) [Seleccionar]
public String getProductoMasCaro() {
           
            masCaro =  listaArticulos.get(0); // esta linea tira un error de Method "get" is called on null object.
       
            for(Articulo articulo : listaArticulos) {
            if(articulo.getPrecio()> masCaro.getPrecio())
            masCaro = articulo;
        }

       
             return masCaro.getNombre();
}

Usuario Invitado

#15
¿Qué error detallado? Yo no veo nada.

Update: El error es el que has puesto como comentario, ya lo ví.

Acostúmbrate a analizar el rastreo de pila que bota la VM cuando hay una excepción. Allí hay mucha info.

Te está diciendo que listaArticulos está sin inicializar. ¿Dónde creas los productos y los guardas en la lista? Muéstrame ese trozo de código.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

touchi

Ya lo pude solucionar, faltaba pasar los datos por parámetro en la función. Los datos pasaban y cuando llegaban a la función "se borraban". Muchísimas gracias Gus y disculpa por no hacer las cosas debidamente, la  verdad estaba un tanto desesperado por que se me viene encima el examen y no podía ni hacer funcionar la aplicación de practica. Mil gracias por ayudar a los que comentaron!!!


Código (java) [Seleccionar]
public String getProductoMasCaro(ArrayList<Articulo> listaArticulos) { //esto soluciono el problema
                   

         masCaro =  listaArticulos.get(0);
       
           
        for(Articulo articulo : listaArticulos) {
            if(articulo.getPrecio()> masCaro.getPrecio())
                masCaro = articulo;
        }
       
             return masCaro.getNombre();
             
             
             
         }

Usuario Invitado

¿Todo solucionado entonces? Genial. Fue un placer haber ser de ayuda. Cualquier duda nueva no dudes en crear un tema.

Saludos!
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein