Foros del Web » Programación para mayores de 30 ;) » Java »

Problema ArrayList

Estas en el tema de Problema ArrayList en el foro de Java en Foros del Web. Hola a todos, expongo mi problema lo mas corto y claro posible; Tengo 2 clases. 1 Se llama Farmacia y otra Guardias. En la clase ...
  #1 (permalink)  
Antiguo 03/07/2015, 02:48
 
Fecha de Ingreso: junio-2015
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Problema ArrayList

Hola a todos, expongo mi problema lo mas corto y claro posible;

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.
  #2 (permalink)  
Antiguo 03/07/2015, 05:56
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Problema ArrayList

Lo primero, antes de entrar en el for, x.arrGuardias ¿tiene algún elemento? No es lo que creas, es lo que veas en debug o en log.

Lo segundo

Cita:
**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
Así que tu código decide si tiene que reemplazar o insertar, ¿y no pones ese código a pesar de que tu problema es que no inserta?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 03/07/2015, 08:41
 
Fecha de Ingreso: junio-2015
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema ArrayList

Cita:
Iniciado por Xerelo Ver Mensaje
Lo primero, antes de entrar en el for, x.arrGuardias ¿tiene algún elemento? No es lo que creas, es lo que veas en debug o en log.

Lo segundo


Así que tu código decide si tiene que reemplazar o insertar, ¿y no pones ese código a pesar de que tu problema es que no inserta?
Si, al entrar al for tiene 1 elemento porque lo compruebo mediante arrGuardias.size

Ese elemento lo he añadido anteriormente de esta forma:

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

Y ahora al entrar al segundo for (entra en ese for porque el arraylist no está vacio, sino no entraría) intento añadir un segundo elemento de la misma forma de la que añado el primero y no hace nada.

La contestacion a tu segunda pregunta, no pongo el codigo porque no es necesario, lo que necesito saber es porque no inserta el valor en el arraylist mediante arrGuardias.add(guardia);, una vez que sepa porque no lo añade podre trabajar con ello y reemplazar o añadir otro.
  #4 (permalink)  
Antiguo 03/07/2015, 09:41
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Problema ArrayList

Buenas,

Como bien indica Xerelo aparentemente el problema esta precisamente en el codigo que no has puesto.

Donde inicializas arrGuardias? Dentro del for? No estaras haciendo un new cada vez, verdad?

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 03/07/2015, 12:06
 
Fecha de Ingreso: junio-2015
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema ArrayList

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Como bien indica Xerelo aparentemente el problema esta precisamente en el codigo que no has puesto.

Donde inicializas arrGuardias? Dentro del for? No estaras haciendo un new cada vez, verdad?

Un saludo
http://paste.ofcode.org/3kEU4C6RQrLx8tNGExiaMk

Te dejo el codigo completo, a ver si asi ayuda mas
  #6 (permalink)  
Antiguo 03/07/2015, 13:58
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Problema ArrayList

Cita:
System.out.println("Introduce una fecha.");
fecha=teclado.next();
System.out.println(arrGuardias.size());
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());
}
System.out.println(arrGuardias.size());
Que te dans los "println" al ejecutarse este código?
Por qué añades al array p en lugar de guardia?
Por qué añades a x.arrGuardias que es el array que estás recorriendo.
Por qué recorres x.arrGuarda si lo unico que quieres es añadir una fecha de guardia al array?

Y sobre todo:
Por qué llamas x a las farmacias y p a las guardias? es algún tipo de encriptación/ofuscación de código?

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 08/07/2015, 07:13
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años, 1 mes
Puntos: 7
Respuesta: Problema ArrayList

Sí, sería más entendible tu código si usaras identificadores un poco más descriptivos, incluso tú mismo lo entenderías mejor.
__________________
El último TipdaR
  #8 (permalink)  
Antiguo 09/07/2015, 15:02
 
Fecha de Ingreso: julio-2015
Mensajes: 10
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema ArrayList

No puedes agregar un elemento, dentro del for del mismo arrayList, debes hacerlo despues del for.


Código:
System.out.println("Introduce otra fecha.");
fecha=teclado.next();

boolean exist = false;
for (Guardias p:x.arrGuardias){
	if( p==fecha) {
		exist = true;
	}
}

if(!exist){
	Guardias guardia=new Guardias(fecha);
	x.arrGuardias.add(guardia);
}

Última edición por ougalejo; 09/07/2015 a las 15:08

Etiquetas: arraylist, clase, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:28.