• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Duda Java

DavidZgz

Nuevo
Registrado
30 Jun 2015
Mensajes
5
Puntos
0
Edito el mensaje porque tengo otra duda, borro lo anterior.

Tengo 2 clases. 1 Se llama Farmacia y otra Guardias. En la clase Farmacia tengo los siguientes atributos:

String nombre;
int codigo;
String direccion;
ArrayList<Guardias>arrGuardias;

En la clase Guardias tengo:

String fecha;

Lo que quiero hacer es que meter muchas fechas en el arraylist (arrGuardias, que está dentro de la clase Farmacia), esto lo quiero hacer desde el main pero no me sale. Solamente puedo meter la PRIMERA fecha, que la meto así:

System.out.println("No hay ninguna guardia introducida, introduce una.");
fecha=teclado.next();
Guardias guardia=new Guardias(fecha);
arrGuardias.add(guardia);

Más tarde, quiero meter otra guardia, pero no se añade al arrayList. Lo intento hacer de este modo :

System.out.println("Introduce otra fecha.");
fecha=teclado.next();
for (Guardias p:x.arrGuardias){
Guardias guardia=new Guardias(fecha);
arrGuardias.add(guardia);
}

**Está metido dentro de un for porque tengo que recorrer el array y si una fecha coincide reemplazarla, pero eso no lo he puesto aqui

El programa entra y sale del for sin problemas, pero he puesto para ver el tamaño del array antes y despues del for y no se añade ningún dato.
 
Última edición:
Estás mezclando las dos formas que hay de recorrer la colección: por iterador y con el for "mejorado".

for(Guardia guardia : arrGuardias){
System.out.println(guardia.getFecha());
}

Suponiendo que la clase Guardia sea algo así:

public class Guardia{
private Date fecha;

public Date getFecha(){
return fecha;
}
}

PD: Está hecho un poco a ojo sobre el foro, pero más o menos debe ser así.
PD2: Actualizo... DateTime es para C# xD
 
objeto.toString()

Enviado desde mi XT1021 mediante Tapatalk
 
Estás mezclando las dos formas que hay de recorrer la colección: por iterador y con el for "mejorado".

for(Guardia guardia : arrGuardias){
System.out.println(guardia.getFecha());
}

Suponiendo que la clase Guardia sea algo así:

public class Guardia{
private Date fecha;

public Date getFecha(){
return fecha;
}
}

PD: Está hecho un poco a ojo sobre el foro, pero más o menos debe ser así.
PD2: Actualizo... DateTime es para C# xD

Joder, me hago el lio yo solo.

Tal cual lo has dicho, me ha funcionado. Mucha gracias!!!
 
He editado el hilo con otro problemilla, si alguien puede ayudarme lo agradeceria !!
 
System.out.println("Introduce otra fecha.");
fecha=teclado.next();
for (Guardias p:x.arrGuardias){
Guardias guardia=new Guardias(fecha);
arrGuardias.add(guardia);
}


Con esto solo pides una fecha, y lógicamente, solo se meterá una, si haces lo que dices de borrar si hay alguna repetida.
 
System.out.println("Introduce otra fecha.");
fecha=teclado.next();
for (Guardias p:x.arrGuardias){
Guardias guardia=new Guardias(fecha);
arrGuardias.add(guardia);
}


Con esto solo pides una fecha, y lógicamente, solo se meterá una, si haces lo que dices de borrar si hay alguna repetida.

Lo que quiero es meter fechas de 1 en 1 y que se vayan almacenando en el arrayList de Guardias (arrGuardias) ese arrayList está dentro de Farmacias. ¿Cómo sería?
 
Aaaaaah, ya lo pillo.

la variable p es el arrayList, tienes que meterlo ahi...

Mirate bien como nombras las variables, es algo clásico en java no nombrarlas bien.
p.add(guardia);
 
Aaaaaah, ya lo pillo.

la variable p es el arrayList, tienes que meterlo ahi...

Mirate bien como nombras las variables, es algo clásico en java no nombrarlas bien.
p.add(guardia);

Tal y como lo dices, no me deja ponerlo

Lo mas parecido que puedo hacer es:

x.arrGuardias.add(p);

ó

arrGuardias.add(p);

Pero sigue sin añadirmelo :(

He pegado el codigo entero en esta pagina para intentar facilitarlo, en la linea 133 está el problema http://paste.ofcode.org/3kEU4C6RQrLx8tNGExiaMk
 
No entiendo para que haces un for para añadir una nueva guardia al arrayList.

Guardias guardia=new Guardias(fecha);
x.arrGuardias.add(guardia);

Con esto la metes, si o si.
 
Estoy desde el móvil y es algo complicado desde aquí, pero lo primero que me ha llamado la atención ha sido esto:

for (Guardias p:x.arrGuardias){
System.out.println("Holadentro");
Guardias guardia=new Guardias(fecha);
x.arrGuardias.add(p);
arrGuardias.add(p);

System.out.println(arrGuardias.size());
}
El for "mejorado" hace que la colección que se usa se vuelva de solo lectura, así que al salir de él, los cambios realizados no se mantienen.
Puedes probar con un for normal y accediendo por posición mediante .get. Así sí permite cambios.
Mira a ver por ahí a ver si consigues algo.

Pd: También te vendría bien acostumbrarte a poner nombres descriptivos a las variables. Hacen tu código más fácil de seguir. Guardias x y Farmacia y y otra cosa p no ayudan mucho xD
 
Arriba