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

Problema inicializar array segun condicion

Estas en el tema de Problema inicializar array segun condicion en el foro de Java en Foros del Web. Buenas tardes a todos! Declaro un array como el siguiente, que son las alineaciones de una tabla para crear un pdf: int[] alineacionHeaderPosicion = { ...
  #1 (permalink)  
Antiguo 26/10/2011, 08:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 152
Antigüedad: 16 años, 7 meses
Puntos: 1
Problema inicializar array segun condicion

Buenas tardes a todos!

Declaro un array como el siguiente, que son las alineaciones de una tabla para crear un pdf:

int[] alineacionHeaderPosicion = { ALIGN_RIGHT, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER };


El problema viene que segun unas elecciones, en la tabla puede haber mas de una columna y claro tambien necesitan su alineacion, sabeis como puedo introducir alguna posicion mas en el array?

Lo he intentado hacer de la siguiente manera:

ASI:
alineacionCuerpoPosicion[alineacionCuerpoPosicion.length] = ALIGN_CENTER;

LUEGO ASI:
alineacionCuerpoPosicion[alineacionCuerpoPosicion.length+1] = ALIGN_CENTER;

PERO NADA ME DA UN ERROR DE ARRAY FUERA DE POSICION O ALGO ASI.

Hay alguna otra forma?

Las comprobacion de si entra una columnas o dos o tres mas las hago con sus correspondientes if.

EJEMPLOS:
if ( countColumns == 1 ) { - GESTION ALINEACIONES - }
if ( countColumns == 2 ) { - GESTION ALINEACIONES - }
if ( countColumns == 3 ) { - GESTION ALINEACIONES - }


Gracias por adelantado!
Saludos!!
  #2 (permalink)  
Antiguo 26/10/2011, 08:42
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema inicializar array segun condicion

1º Los arrays son elementos de tamaño fijo, puedes usar un método recursivo que genere un array a partir del anterior
alineacionCuerpoPosicionAux = alineacionCuerpoPosicion;
alineacionCuerpoPosicion = new Array(alineacionCuerpoPosicion.length+1);
for(int i = 0; i < alineacionCuerpoPosicionAux.length; i++) {
alineacionCuerpoPosicion[i] = alineacionCuerpoPosicionAux[i];
}
alineacionCuerpoPosicion[alineacionCuerpoPosicion.length-1] = ALIGN_CENTER;

Lo otro es que como la posición empieza en 0, si tienes 10 elementos la ultima posición sería la 9, así que te dice que estás intentando acceder a una posición que no existe en el array.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 31/10/2011, 05:03
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 12 años, 10 meses
Puntos: 19
Respuesta: Problema inicializar array segun condicion

te da error porque en la linea

alineacionCuerpoPosicion[alineacionCuerpoPosicion.length+1] = ALIGN_CENTER;

al sumar "alineacionCuerpoPosicion.length+1" te estas llendo fuera del indice máximo del array, ya que el lenght te esta dando el tamaño del array y apunta al último elemento del mismo.
tambien esta el error en la linea

alineacionCuerpoPosicion[alineacionCuerpoPosicion.length] = ALIGN_CENTER;

tene en cuenta que el primer elemento de un array esta en la posicion 0, por lo tanto las lineas correctas serían:

alineacionCuerpoPosicion[alineacionCuerpoPosicion.length-1] = ALIGN_CENTER;
alineacionCuerpoPosicion[alineacionCuerpoPosicion.length-2] = ALIGN_CENTER;

Etiquetas: inicializar
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 19:35.