Java - no me acepta el valor del metodo

 
Vista:
sin imagen de perfil
Val: 89
Ha disminuido su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

no me acepta el valor del metodo

Publicado por jose maria (85 intervenciones) el 09/08/2016 12:44:44
hola, soy nuevo y trabajo con bluej....
tengo la clase A en la cual tengo un arraylist de la clase B:

private ArrayList <B> b;
.....
b=new ArrayList <B>();

en la clase B tengo un arraylist de la clase C:

private ArrayList <C> c;
.....
c=new ArrayList <C>();

en el código de la clase B tengo este método que me devuelve el tamaño de c:

public int cantidaddec()
{
return c.size();
}

estas clases están relacionadas.
ahora bien, cuando intento hacer en la clase A esto, me da error:

int z=b. cantidaddec();

error :
cannot find symbol- method cantidaddec()

y ahora os explico lo que deseo hacer que me llevo a crear la variable z:

tengo un bucle en la clase A en la que se repiten las acciones asta :
for (int i = 0; i <= b.size() - 1; i++)
asta aqui sin ningun problema...
y cuando voy a crear dentro de este otro bucle que se repita asta el tamaño de c:
for (int y = 0; y <= (b. cantidaddec()) - 1; i++)
es cuando me da error.
¿como lo podría hacer?
espero que no me haya liado al explicarlo
gracias
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

no me acepta el valor del metodo

Publicado por Hector (27 intervenciones) el 09/08/2016 16:30:26
Recuerda que el atributo b de la clase A es un arraylist que puede contener objetos de la clase B, para poder acceder a algun metodo de la clase B, primero debes obtener el objeto del arraylist, y luego llamas el metodo adecuado.

1
2
3
4
5
6
int z=b. cantidaddec(); // Llama a un metodo del arraylist,
                                         // Debido a que el arraylist no tiene ese metodo te dara un error
 
z = b.get(0).cantidaddec(); // Estas obteniendo una referencia a un elemento
                                                // del arraylist, como ese elemento pertenece a la clase B
                                                // Podras llamar los metodos de esa clase

Es por eso que tu llamada te genera un error.

Ahora para recorrer un arraylist dentro de otro arraylist:

1
2
3
4
5
for(int i = 0; i < b.size(); i++){
       for(int j = 0; j < b.get(i).cantidaddec(); j++){
            // TODO
      }
}

Nota que utilizamos el get para obtener el elemento especifico del arraylist. Existen formas mas efectivas de recorrer arraylist que te provee java como el for each:

1
2
3
4
5
for(B elementob : b){
       for(C elementoc : elementob.c){
           // TODO
       }
}

Ten en cuenta que para que este método funcione, debes crear el arraylist C de la clase B publico. Aquí te dejo una referencia si estas interesado sobre el for each:

Stack OverFlow
Linea de Codigo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

no me acepta el valor del metodo

Publicado por Tom (1831 intervenciones) el 09/08/2016 17:28:26
Si lo has pegado tal y como lo tienes en tus fuentes, tienes un espacio en blanco que sobra:

int z=b. cantidaddec();
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