Java - Ayuda para entender éste código

 
Vista:

Ayuda para entender éste código

Publicado por Carolina (1 intervención) el 27/10/2019 19:42:48
Buenas!!

Hace mucho tiempo que no programa con Java, tengo un trocito de código y hay un par de cosillas que no consigo entender:

1
2
3
4
5
int c = 0;
 
for(int i=0; i<listaTareas.size(); i++)
 
                listaTareas.at(i).empleados.size() == 0 ? c++;

¿listaTareas se supone que es un ArrayList?

¿Que significa el ".at()"?

Y el operador "?" sólo lo había visto como operador ternario, pero en ese caso que hace como un if?


Muchísimas gracias a todos
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para entender éste código

Publicado por Kabuto (1381 intervenciones) el 27/10/2019 21:36:53
Hola.
No es un ArrayList porque esta clase no tiene ningún método at().

¿No tienes el código completo? ¿Seguro que es Java? A ver si va a ser C++ u otro lenguaje
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
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para entender éste código

Publicado por Carolina (2 intervenciones) el 04/11/2019 19:19:41
Gracias por tu respuesta Kabuto.

Ese código corresponde a una pregunta de test que dice así:

Suponiendo que implementamos la lógica de la aplicación en Java, indique cuál será el resultado del siguiente código perteneciente a la aplicación:

1
2
3
4
5
int c = 0;
 
for(int i=0; i<listaTareas.size(); i++)
 
    listaTareas.at(i).empleados.size() == 0 ? c++;

Seleccione una:
a. Elimina todos los empleados asignados a todas las tareas.
b. Elimina el último empleado asignado a cada una de las tareas
c. Calcula el número de empleados sin tarea asignada.
d. Calcula el número de tareas sin empleado asignado.


Y por más que he buscado lo de .at(i) no he encontrado nada
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
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para entender éste código

Publicado por pablo (239 intervenciones) el 04/11/2019 19:45:00
Hola Carolina bueno el método at corresponde efectivamente como dice kabuto a c++
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Biblioteca_Est%C3%A1ndar_de_Plantillas/Vectores

En resumidas cuentas lo que hace es que devuelve el elemento de una posición específica, cada vez que pase por i le dira cuál es la tarea y lo que sigue es un if ternario que evalúa si empleados es igual a 0 y sí no tiene nada el empleados pues incrementara c en 1 y si no pues no hace nada por que no tiene la lógica cuando es false, en conclusión yo te diría que la respuesta para mi es la d, aunque me genera dudas ya que la c y la d parecen lo mismo. De todos modos bueno esperemos a ver si hay alguien más del foro que responda.

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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para entender éste código

Publicado por Kabuto (1381 intervenciones) el 04/11/2019 22:23:40
Ya me parecía a mi que eso no era Java.

En cualquier caso, independientemente del lenguaje que sea, estoy bastante seguro que la respuesta es la d

El at() en ese código viene a ser lo mismo que el método get() de los ArrayList de Java.

Ergo, ese código lo que hace es:
- consultar todas las tareas de listaTareas,
- obtiene la cantidad de empleados asignados a cada tarea,
- La compara con el valor 0, y si la comparación es cierta (true), aumenta el contador c.

Así que lo que hace es contar las tareas que no tiene empleados asignados (empleados.size() = 0 )
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

Ayuda para entender éste código

Publicado por Renzo (232 intervenciones) el 04/11/2019 23:28:56
Hola
la sentencia at() sirve para obtener el elemento del grupo ubicado en una posición especifica. Por ejemplo, para obtener el elemento ubicado en la posición 4, deberia escribirse la sentencia .at(3)

El caracter ? sirve como operador ternario. Ejemplo


(condicion) ? (si es true, ejecutar esta sentencia) : (si es false, ejecutar esta otra)


IF persona.edad >= 18 ? contadorAdultos ++ : contadorMenores ++.

Espero hayas podido entenderlo

Renzo

http://www.imagineanddo.com/search/label/java
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
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para entender éste código

Publicado por Carolina (2 intervenciones) el 05/11/2019 20:40:38
Muchas gracias a Pablo, Kabuto y Renzo por vuestras respuestas, ahora sí que me ha quedado claro.
Es que en el enunciado pone Java (ahora ya sabemos que se han confundido) y por más que buscaba información en internet no encontraba nada.

La respuesta correcta me marca la d), estáis en lo cierto!!!!

Gracias!!!
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