Sunteți pe pagina 1din 14

ARREGLOS EN JAVA

Hola que tal, esta vez vamos a ver que son los arreglos en
Java (vectores y matrices en Java). Los arreglos pueden ser
unidimensionales (también conocidos como vectores o
arrays), Multidimensionales (matrices) que pueden ser de 2
o 3 dimensiones.
Hasta ahora para poder almacenar información (de forma
temporal) y poder utilizarla en los programas, hemos
utilizado las variables, ya sea de tipo entero, String, double
etc.
Aprende este y otros temas de Programación Java
Web. Accede gratis al Curso de Java EE y suscribete al canal
de Youtube.
Si quieres profundizar sobre el tema de variables revisa esta
entrada Variables y tipos de datos en Java.
Bueno, con lo visto hasta ahora, digamos que queremos
almacenar 25 notas de estudiantes, esto requiere declarar 25
variables (algo razonable), pero ahora imaginemos que
necesitamos almacenar 100 o 1000 o 2000 notas, en este
caso tendremos que declara una variable para cada nota, en
total serían 100 o 1000 o 2000 variables, tedioso, confuso y
cansado, verdad?
El problema anterior se optimiza utilizando un tipo de
estructuras datos que son los arreglos, los arreglos
(específicamente un vector) son un tipo especial de objeto y
permiten almacenar un conjunto de elementos de un mismo
tipo, por ejemplo enteros, o String o char u objetos, pero no
mezclados.
El compilador de Java trata a los arreglos de la misma manera
que a una variable, es decir se declaran, se inicializan y
posteriormente se utilizan.
Nota: Si te interesa seguir el tema de programación Web
con Java, puedes revisar miCurso de Programación Java
Web, con JSP, Servlet y JPA donde aprenderás paso a paso
como desarrollar aplicaciones web con Java.
ARREGLOS UNIDIMENSIONALES (VECTORES, ARRAYS, ARREGLOS)
La sintaxis para declarar e inicializar un vector es la siguiente:

1 tipo_dato [] nombre_vector = new tipo_de_dato[dimension];//ejemplo de sintaxis, esto da error por el compilador


2
3 int [] miArreglo=new int [6];// ejemplo de declaración en inicialización de un vector

En donde:

 int es el tipo de dato para los elementos del vector, con


esta declaración el vector sólo puede almacenar
valores de tipo entero.
 [] los corchetes le indican al compilador que no estoy
declarando una variables, si no un vector.
 miArreglo es el nombre que se le da al vector, con este
nombre podré acceder a su contenido y utilizar cuantas
veces sea necesario dentro del programa.
 el operador = le dice al compilador que debe apuntar a
una zona de memoria que se va reservar para el
arreglo.
 la palabra reservada new crea un espacio en memoria
para el vector y la palabra int le dice que será de tipo
entero.
 [6] el número entre corchetes le indica que la
dimensión para ese arreglo será de 6, esto quiere decir
que sólo puede almacenar hasta 6
elementos enteros. Cabe aclarar que la dimensión de
un arreglo es fija, una vez declarado, no se puede
cambiar en tiempo de ejecución.

De acuerdo a lo anterior en un vector podemos almacenar


elementos de cualquier tipo de dato (int, char, float, double
etc.).
La declaración anterior de un vector en memoria se vería algo
parecido a la siguiente imagen.

También podemos declarar e inicializar en en 2 sentencias:

1 tipo_dato [] nombre_variable; // declara


2
3 nombre_variable = new tipo_de_dato[dimensión]; // se inicializa
CÓMO LLENAR UN VECTOR (GUARDAR ELEMENTOS EN UN VECTOR)

Un vector se maneja a través de posiciones, empezando


desde la posición cero y para obtener/almacenar uno de sus
elementos se utiliza un índice (una variable), el índice indica
la posición del elemento en el vector a la que se quiere
acceder.
Entonces un vector como el del ejemplo con dimensión 6,
efectivamente se puede almacenar 6 elementos pero solo
tendrá 5 posiciones (puesto que se empieza desde la posición
0) a las cual se puede acceder ya sea para almacenar u
obtener elementos almacenados.
Para almacenar un elemento en un vector se utiliza la
siguiente sintaxis:
nombre_vector [indice/posicion]=valor_asignar;

Utilizando el ejemplo anterior podríamos escribir la siguiente


sentencia:

1 miArreglo[1]=7;

Lo que hicimos fue asignar en la posición 1 del vector, el


elemento 7.
Nota importante: Tomar en cuenta que se puede utilizar
directamente la posición (como en el ejemplo anterior) para
acceder a un elemento, pero lo más común es utilizar una
variable, como se verá más adelante.
Otra forma de inicializar un vector, es dándole sus
elementos respectivos al momento de declararlo, en este
caso no declaramos la dimensión, si no que el compilador
asigna la dimensión de acuerdo a los elementos con los que
se inicializa el vector:
tipo_dato [] nombre_variable = {valor1,valor2,valor3,valor3,N…};

1 int[] miArrreglo= {1,5,7,9,4,5,100};

CÓMO ACCEDER A UN ELEMENTO EN UN VECTOR

Para obtener un elemento desde un vector, se lo realiza de la


siguiente forma:
tipo_dato nombre_variable= nombre_vector[indice/posicion];

1 int valor= miArrreglo[3];

Se está obteniendo el elemento de la posición 3 y se


almacena en la variable de tipo entero llamada valor.
Nota importante: Cuando la dimensión de un arreglo es
demasiado grande, se puede llenar o imprimir el contenido
de un vector utilizando un ciclo for.
Si quieres seguir el tema de programación Web con
Java, puedes revisar los siguientes enlaces:

 Cómo crear un Proyecto Web en Eclipse,


 CÓMO CREAR UN CRUD EN JAVA WEB CON JSP Y
SERVLET,
 Integrar Bootstrap en un proyecto Java Web usando
Java 8.
EJEMPLO COMPLETO COMO UTILIZAR VECTORES EN JAVA

Ejemplo: Pedir 10 números por teclado y obtener la suma,


media aritmética, el número menor, el número mayor y
cuántas veces se repite cada número.

1 package com.ecodeup.arreglos;
2
3 import java.util.Scanner;
4
5 public class TestArreglos {
6 public static void main(String[] args) {
7 Scanner entrada = new Scanner(System.in);
8 float promedio = 0;
9 float suma = 0;
10 int mayor = 0;
11 int menor = 0;
12
13 int[] miArreglo = new int[10];
14 for (int i = 0; i < 10; i++) {
15 System.out.print("Ingrese el número en la posición " + (i) + " :");
16 miArreglo[i] = entrada.nextInt();
17 }
18 // realizar la suma, promedio y el mayor
19 for (int i = 0; i < miArreglo.length; i++) {
20 suma += miArreglo[i];
21 if (mayor < miArreglo[i]) {
22 mayor = miArreglo[i];
23 }
24 System.out.println(String.format("Posición [%d] Elemento: %d", i,
25 miArreglo[i]));
26 }
27 menor = mayor;
28 // buscar el menor
29 for (int i = 0; i < miArreglo.length; i++) {
30 if (menor > miArreglo[i]) {
31 menor = miArreglo[i];
32 }
33 }
34 //promedio
35 promedio = suma / miArreglo.length;
36 System.out.println("***Salida***");
37 // contar las veces que se repite cada número
38 int cont;
39 for (int i = 0; i < miArreglo.length; i++) {
40 cont = 0;
41 for (int j = i; j < miArreglo.length; j++) {
42 if (miArreglo[i] == miArreglo[j]) {
43 cont++;
44 }
45 }
46 System.out.println(String.format("El número %d se repite %d veces",
47 miArreglo[i], cont));
48 }
49 System.out
50 .println(String
51 .format("La suma es %.2f, el promedio es %.2f, el mayor
52 es %d, el menor es %d",
53 suma, promedio, mayor, menor));
54 }
55
}

Ahora vamos a resumir brevemente el código utilizado.


INGRESAR NÚMEROS

Se utiliza un for para el ingreso, que va desde la línea 14 hasta


la 17.
REALIZAR LA SUMA Y BUSCAR EL NÚMERO MAYOR

Desde la línea 19 hasta la 26, con la ayuda de un ciclo for en


la variable suma se acumula, la suma total de todos los
elementos del vector, a la variable mayor se la inicializa en 0,
con una sentencia if se va preguntando por cada iteración si
el elemento del vector es mayor al valor que tiene
actualmente la variable mayor, si es verdad se asigna en la
variable mayor el elemento del vector, si no el valor de la
variable mayor se mantiene.
BUSCAR EL VALOR MENOR

En la línea 27 se asigna el valor mayor, contenido en la


variable mayor a la variable menor, utilizando un ciclo for y
una sentencia if, se recorre el vector y se va preguntando si
hay números menores al valor de la variable menor, en caso
de haber se actualiza el contenido de la variable.
PROMEDIO Y NÚMERO DE VECES QUE SE REPITE CADA ELEMENTO

El promedio se obtiene en la línea 35, dividiendo la suma


obtenida para el número de elementos del vector, para
contar cuantas veces se repite un numero se utiliza 2 ciclos
for, con una variable que hace de contador que almacena el
número de veces repetidas por elemento.
Nota importante: El método length obtiene la
dimensión que tiene un arreglo.
ARREGLOS MULTIDIMENSIONALES (MATRICES)
También conocidas como matrices, son un tipo especial de
vectores, funcionan de forma parecida que un vector, de
igual forma almacenan elementos de un mismo tipo, el
acceso a sus elementos se lo hace utilizando índices igual
que en los vectores.
La diferencia fundamental es que en las matrices se maneja
el concepto de fila y columna y por esa razón se las trabaja
de forma diferente.
COMO DECLARAR UNA MATRIZ

La declaración de una matriz se la puede hacer con la


siguiente sentencia:
tipo_dato nombre_matriz [][]= new tipo_dato [dimension_filas][dimension_columnas];
1 int miMatriz[][]= new int[5][2];//ejemplo declaración e inicialización

En donde:

 int es el tipo de dato para los elementos de la matriz,


esta matriz sólo puede almacenar valores de tipo
entero.
 [] [] los 2 corchetes le indican al compilador que no
estoy declarando una variable, ni un vector, si no una
matriz.
 miMatriz es el nombre que se le da a la matriz, con
este nombre podré acceder a su contenido y utilizar
cuantas veces sea necesario.
 el operador = le dice al compilador que ese vector
debe apuntar a una zona de memoria que se va
reservar para la matriz.
 la palabra reservada new crea un espacio en memoria
para la matriz y la palabra int le dice que será de tipo
entero.
 [5] [2] el número entre corchetes le indica que la
dimensión que tendrá la matriz, el primer corchete
indica el número de filas y el segundo corchete indica
el número de columnas; es decir tendrá 5 filas y 2
columnas.
COMO LLENAR UNA MATRIZ

Existen 2 formas de llenar una matriz


La primera es dándole valores al momento de crearla
(quemando los elementos), la sintaxis sería como sigue:
tipo_dato nombre_matriz [][]={{elemento1, elemento2, elemento3},{elemento4,
elemento5,elemento6}};

1 int miMatriz [][] = {{2,5,3},{3,6,9},{0,8,9}};

En el caso anterior hemos declarado y llenado una matriz con


elementos fijos, la dimensión de esta matriz es de 3×3.
La llaves externas definen la matriz, para separar cada fila lo
hacemos con llaves{} internas seguido de una coma (,) .
Para separa las columnas se utiliza una coma (,) después de
cada elemento.
La segunda forma es declararla, darle dimensiones y luego
llenarla utilizando las posiciones de acuerdo a la siguiente
sintaxis:
nombre_matriz [posfila][poscolumna]=elemento;

1 int miMatriz [][] =new int [3][3];


2 //llenar la primera fila
3 miMatriz[0][0]=5;
4 miMatriz[0][1]=8;
5 miMatriz[0][2]=1;
6 //llenar la segunda fila
7 miMatriz[1][0]=9;
8 miMatriz[1][1]=7;
9 miMatriz[1][2]=2;
10 // llenar la tercera fila
11 miMatriz[2][0]=10;
12 miMatriz[2][1]=15;
13 miMatriz[2][2]=25;
La declaración en inicialización anterior crearía en memoria
algo parecido a la siguiente imagen:

Como podemos observar las matrices al igual que los


vectores empiezan desde la posición cero (0), es por eso que
siempre para llenar o acceder a un elemento, debemos tener
en cuenta de no acceder a posiciones que no existen.
La forma anterior que muestra como llenar una matriz es un
poco tedioso ya que si fueran muchos elementos tendríamos
que repetir líneas de código, una buena forma de llenar una
matriz es hacerlo un poco más dinámico utilizando 2 ciclos
for, uno para manejar las filas y otro para las columnas.

1 Scanner entrada = new Scanner(System.in);


2 for (int i = 0; i < miMatriz.length; i++) {
3 for (int j = 0; j < miMatriz.length; j++) {
4 System.out.print("Ingrese un elemento: ");
5 miMatriz[i][j]=entrada.nextInt();
6 }
7 }
En este caso se ha llenado pidiendo elementos desde la
consola, en donde los indices corresponden a las variables i e
j que llenan respectivamente cada posición de la matriz.
COMO ACCEDER A LOS ELEMENTOS DE UNA MATRIZ

De la misma forma que se puede llenar una matriz utilizando


las posiciones vista en el ejemplo anterior, también se puede
accesar a sus elementos utilizando las posiciones.
tipo_dato variable= nombre_matriz [pos_fila][pos_columna] ;

1 int var=miMatriz[0][2];

Si continuamos con el ejemplo anterior el valor que se


almacena en la variable var es el número 1, puesto que está
en las posiciones fila 0 columna 2 de la matriz.
Otra forma de acceder a los elementos de una matriz
es recorrerla utilizando ciclos for, en este caso vamos a
imprimir los elementos de la matriz del ejemplo anterior.

1 for (int i = 0; i < miMatriz.length; i++) {


2 for (int j = 0; j < miMatriz.length; j++) {
3 System.out.print(String.format(" %d ",miMatriz[i][j]));
4 }
5 System.out.println();
6 }

EJEMPLO COMPLETO COMO UTILIZAR MATRICES EN JAVA


Ejemplo: Ingresar elementos en una matriz de 3×3 y obtener
e imprimir la suma y el promedio por cada fila de la matriz.

1 package com.ecodeup.matrices;
2
3 import java.util.Scanner;
4
5 public class TestMatriz {
6
7 public static void main(String[] args) {
8 int matriz[][] = new int[3][3];
9
10 Scanner entrada = new Scanner(System.in);
11 float sumaFila = 0;
12 for (int i = 0; i < matriz.length; i++) {
13 for (int j = 0; j < matriz.length; j++) {
14 System.out.print("Ingrese el número en la fila " + (i)
15 + " columna " + j + " :");
16 matriz[i][j] = entrada.nextInt();
17 }
18 }
19 for (int i = 0; i < matriz.length; i++) {
20 sumaFila = 0;
21 for (int j = 0; j < matriz[i].length; j++) {
22 sumaFila += matriz[i][j];
23 System.out.print(String.format(" %d ", matriz[i][j]));
24 }
25 System.out.print(String.format(
26 " Suma fila: %f, promedio fila: %f ", sumaFila, sumaFila
27 / matriz.length));
28 System.out.println();
29 }
30 }
31 }

Nota importante: Tanto en la declaración de vectores como


de matrices los corchetes pueden ir delante del nombre o
atrás, sin que haya algún error de compilación, por ejemplo,
ambos casos compilan correctamente.
int [] vector = new int[10];
int vector []= new int[10];

S-ar putea să vă placă și