Java - Problema con arraylist de objeto

 
Vista:

Problema con arraylist de objeto

Publicado por Ro (7 intervenciones) el 25/04/2019 18:37:52
Buenas tardes, tengo un problema con un ejercicio. Tengo un arraylist cargado con objetos de una clase, y tengo que hacer un método y a ese método pasarle por parámetro la cantidad de productos a agregar, el objeto tiene como atributo un Codigo, y tengo que fijarme si ese codigo existe en el arraylist, si el código existe a la cantidad de ese producto le sumo la cantidad ingresada por parámetro, y si el código ingresado no esta en el arraylist agrego el objeto al array.

El problema es que en el código que hice no funciona la condición de agregar el objeto al array, lo que hace es: Si el codigo no es igual suma igualmente la cantidad y no agrega el objeto al arraylist.
Si alguien podria guiarme un poco se lo agradeceria, porque es la primera vez que trabajo con un arrayList de objetos.

1
2
3
4
5
6
7
8
9
10
11
12
public void electrodomestico (Electrodomestico s, int cant) {
 
    for (int i=0; i<vect.size();i++) {
        if (vect.get(i).codigo != s.codigo) {
            vect.add(s);
 
        } else {
            vect.get(i).cant += cant;
 
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 147
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con arraylist de objeto

Publicado por Yamil Bracho (2302 intervenciones) el 25/04/2019 18:45:38
Que tipo de dato es codigo ? Si es Strign debes usar equals para compararlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con arraylist de objeto

Publicado por Tom (1569 intervenciones) el 25/04/2019 18:48:51
Implementa equals() en Electrodomestico para que dos objetos sean iguales si tienen el mismo código.
Luego, algo como esto funcionaría:
1
2
3
4
5
6
int idx = vect.indexOf(s);
if(idx < 0) {
  vect.add(s);
} else {
  vect.get(idx).cant += cant;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con arraylist de objeto

Publicado por Ro (7 intervenciones) el 25/04/2019 19:22:36
Osea que si yo pongo if ((vect.get(i).codigo).equals(s.codigo)) { va a comparar los codigos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con arraylist de objeto

Publicado por Yamil Bracho (2302 intervenciones) el 25/04/2019 19:28:43
Si codigo es tipo refrencia (objeto), si...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con arraylist de objeto

Publicado por Tom (1569 intervenciones) el 25/04/2019 19:52:18
Si implementas el método equals() harías (según lo que pones) vect.get(i).equals(s)
Además indexOf() te devolverá un objeto que sea "igual" que el tuyo si existe en el ArrayList.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar