Saltar la navegación

3.- Creación de arrays.

Caso práctico

Fotografía de una mujer pensando.
ITE idITE=109713 (CC BY-NC)

Después del susto inicial, al recibir el archivo con el formato de pedido, Ana se puso a pensar. Vio que lo más adecuado era procesar el archivo de pedido línea a línea, viendo con que corresponde cada línea a través de expresiones regulares. Aún no le preocupa el procesamiento del fichero, sino más bien cómo procesar los datos leídos del mismo.

Para identificar si hay un inicio o fin de sección dentro del pedido, así como el inicio o fin del listado de artículos, ha decidido usar la siguiente expresión regular:

"^##[ ]*(FIN){0,1}[ ]*(PEDIDO|ARTICULOS)[ ]*##$".

Y para identificar cada dato del pedido (nombre, dirección, etc.) va a utilizar la siguiente expresión regular: 

"^(.+):.*\\{(.*)\\}$"

Al usar grupos le permitirá separar el nombre del campo (dirección por ejemplo) de su valor (dirección concreta). La expresión regular le ha costado mucho trabajo y ha tenido que pedir ayuda, pero después, una vez que la ha conseguido, se ha dado cuenta de que ha sido relativamente fácil.

Ana ha decidido de todas formas verificar sus expresiones regulares a través de alguna herramienta online. Para ello, se ha puesto a investigar sobre algunas de ellas y en principio utilizará freeformatter. Para ello, tomando los datos de ejemplo del fichero de pedidos, podrá comprobar que sus expresiones regulares están bien formadas.

Ya tiene parte del trabajo hecho. Como comentamos arriba, aún no le preocupa el procesado del fichero sino la parte de artículos. Básicamente tiene dudas sobre donde almacenar la información procesada, en especial, la lista de artículos.

Acrónimo inglés de8-bit Unicode Transformation Format, que significa formato de Transformación Unicode de 8 bits. Una de las codificaciones de caracteres, recogidas dentro del estándar Unicode, más utilizada hoy día.

Ilustración que describe la numeración de las diferentes posiciones de un array de números enteros. En la imagen aparece los datos de un array de 10 posiciones, y una etiqueta en la que cada elemento está numerado, empezando por el cero como posición del primer elemento, hasta el 9, como posición del último elemento del array.
Salvador Romero Villegas. (CC BY-NC)

¿Y dónde almacenarías tú la lista de artículos del pedido? Una de las soluciones es usar arrays, puede que sea justo lo que necesita Ana, pero puede que no. Todos los lenguajes de programación permiten el uso de arrays, veamos como son en Java.

Los arrays permiten almacenar una colección de objetos o datos del mismo tipo. Son muy útiles y su utilización es muy simple:

  • Declaración del array. La declaración de un array consiste en decir "esto es un array" y sigue la siguiente estructura: "tipo[] nombre;". El tipo será un tipo de variable o una clase ya existente, de la cual se quieran almacenar varias unidades.
  • Creación del array. La creación de un array consiste en decir el tamaño que tendrá el array, es decir, el número de elementos que contendrá, y se pone de la siguiente forma: "nombre=new tipo[dimension]", donde dimensión es un número entero positivo que indicará el tamaño del array. Una vez creado el array este no podrá cambiar de tamaño.

Veamos un ejemplo de su uso:

int[] n; // Declaración del array.

n = new int[10]; //Creación del array reservando para el un espacio en memoria.

int[] m=new int[10]; // Declaración y creación en un mismo lugar.

Una vez hecho esto, ya podemos almacenar valores en cada una de las posiciones del array, usando corchetes e indicando en su interior la posición en la que queremos leer o escribir, teniendo en cuenta que la primera posición es la cero y la última el tamaño del array menos uno. En el ejemplo anterior, la primera posición sería la 0 y la última sería la 9.

Autoevaluación

Pregunta

¿Cuáles de las siguientes opciones permitiría almacenar más de 50 números decimales?

Respuestas

int[] numeros; numeros=new int[51];

int[] numeros; numeros=new float[52];

double[] numeros; numeros=new double[53];

float[] numeros=new float[54];

Retroalimentación