You are on page 1of 20

Ingeniera de Sistemas e Informtica

Array en Java
Asignatura : Lenguaje de Programacin I Semestre : 2012-I Turno : Noche Elaborado por

Ing Oscar Alberto Barnett Contreras

Objetivos

Declarar un array de tipos de datos primitivos. Inicializar un array mediante lazos y en la declaracin. Utilizar lazos para realizar operaciones con un array:

Ordenar un array con el mtodo burbuja. Buscar en un array con el mtodo lineal.
Ing. Oscar ALberto Barnett Contreras

Declaracin de un array
Array: objeto que contiene una coleccin de elementos con el mismo tipo de dato. Declaracin de un array:
lluvia[0] lluvia[1] lluvia[2] lluvia[3] lluvia[4] lluvia[5] lluvia[6] lluvia[7] lluvia[8] lluvia[9] lluvia[10] lluvia[11]

0
0 0 0 0 0 0 0 0 0 0 0

Tipo[] identificador;
O Tipo identificador[];

Un array se construye con el operador new int lluvia[]; lluvia = new int[12]; O int lluvia[] = new int[12]; Se crea un array de 12 elementos con valor 0.

Ing. Oscar ALberto Barnett Contreras

Declaracin de un array
lluvia[0] lluvia[1]

0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

double lluvia[]; lluvia = new double[12]; O

lluvia[2] lluvia[3] lluvia[4] lluvia[5] lluvia[6] lluvia[7]

double lluvia[] = new double[12];

Se crea un array de 12 elementos con valor 0.0

lluvia[8] lluvia[9] lluvia[10] lluvia[11]

Ing. Oscar ALberto Barnett Contreras

Declaracin de un array
lluvia[0] lluvia[1]

null
null null null null null null null null null null null

gota lluvia[]; lluvia = new gota[12]; O

lluvia[2] lluvia[3] lluvia[4] lluvia[5] lluvia[6] lluvia[7]

gota lluvia[] = new gota[12];

Se crea un array de 12 elementos con valor null

lluvia[8] lluvia[9] lluvia[10] lluvia[11]

Ing. Oscar ALberto Barnett Contreras

Acceso a los elementos


Los elementos de un array se acceden mediante un ndice.

lluvia[2]

lluvia[i+1]

El ndice de la primera posicin de un array es siempre 0.

Ing. Oscar ALberto Barnett Contreras

Iniciacin de array en la declaracin


La forma de iniciar un array al declararlo es como sigue:
String[] nombreMes = {enero,febrero,marzo, abril,mayo,junio, julio,agosto,septiembre, octubre,noviembre,diciembre};

Ing. Oscar ALberto Barnett Contreras

Iniciacin de array con lazo


Leer 12 valores de lluvia mensual y calcular el promedio
double lluvia[] = new double[12]; double mediaAnual, suma = 0.0; for( int i = 0; i < 12; i++)

{ System.out.print(LLUVIA PARA EL MES + (i+1)); lluvia[i] = sc.nextDouble(); suma += lluvia[i]; } mediaAnual = suma/12; System.out.println(Media anual = + mediaAnual);
Ing. Oscar ALberto Barnett Contreras

Procesos en un array
Calcula la diferencia entre la lluvia del mes y la media anual

double diferencia;
for( int i = 0; i < 12; i++) {

System.out.println( lluvia[i] ); diferencia = Math.abs(lluvia[i]- mediaAnual); System.out.println( diferencia );


}

Ing. Oscar ALberto Barnett Contreras

Tamao de un array
El tamao de un array se obtiene por medio del miembro length del objeto array. Los lazos de los ejemplos anteriores pueden escribirse como: for( int i = 0; i < lluvia.length; i++) {

; ;

}
Ing. Oscar ALberto Barnett Contreras

Lluvia para meses pares e impares


double lluvia[] = new double[12]; double sumaMesImpar = 0.0, mediaMesImpar, double sumaMesPar = 0.0, mediaMesPar; for(int i=0; i < lluvia.length; i++) { System.out.print("LLUVIA PARA EL MES DE + nombreMes[i]); lluvia[i]=(double) sc.nextFloat(); } for(int i = 0; i < lluvia.length; i+=2) sumaMesImpar += lluvia[i];
mediaMesImpar = sumaMesImpar/6; for(int i = 1; i < lluvia.length; i+=2) sumaMesPar += lluvia[i]; mediaMesPar = sumaMesPar/6;
Ing. Oscar ALberto Barnett Contreras

Mtodo de ordenacin
Compara el primer elemento con el segundo, luego el segundo, con el tercero, etc., si es necesario se intercambian los elementos. Al final de esta pasada se tendr el primer elemento ordenado al inicio. La pasada se repite a partir del segundo elemento con todos los dems y luego a partir del tercer , etc., hasta el penltimo.
for(i = 0; i<n-1; i++) for(j = i+1; j<n; j++) if(d[i]>d[j]) { }
Ing. Oscar ALberto Barnett Contreras

intercambiar d[i] y d[j];

Ordenacin y despliegue
//Despliega lista desordenada System.out.println("Desordenados\n"); for(i = 0; i<n; i++) System.out.println(d[i]); System.out.println("\nOrdenados\n"); //ordena el vector for(i = 0; i<n-1; i++) for(j = i; j<n; j++) if(d[i].compareToIgnoreCase(d[j])>0){ String temp = d[i]; d[i] = d[j]; d[j] = temp; } //Despliega lista ordenada for(i = 0; i<n; i++) System.out.println(d[i]); } }
Intercambia cadenas Compara cadenas 0 iguales >0 la primera mayor <0 la primera menor
Ing. Oscar ALberto Barnett Contreras

Mtodo de Bsqueda Lineal


El mtodo consiste en comparar la clave de bsqueda (el valor a encontrar) con cada elemento del arreglo, si la clave es encontrada se cambia el estado de una variable bandera ( flag) obteniendo la posicin donde existe la clave.
clave = sc.nextInt(); bandera = 0; for(i = 0; i<array.lenght; i++) if(clave == array[i]) { }
Ing. Oscar ALberto Barnett Contreras

bandera = 1; posicin = i;

Array Multidimensional
Un array multidimensional es un array de elementos array. En un array multidimensional de k-dimensiones; sus elementos se pueden acceder empleando la siguiente sintaxis: array [ i1 ] [ i2 ][ ik ]

donde n1, n2, .., nk

Ing. Oscar ALberto Barnett Contreras

Declaracin de array MD
De la misma forma que el array simple, el MD se puede declarar con alguna de las siguientes formas:

Usando el operador new. Usando inicializacin al declarar.

Ing. Oscar ALberto Barnett Contreras

Declaracin de array MD
Usando operador new
new Tipo [ n1] [n2][nk]

Usando inicializador

Tamao de cada dimensin es n1, n2, ,nk, respectivamente.


Todos los elementos en el array son inicializados con los valores default segn el tipo de sus elementos.

{I1, I2, ...., Ik} donde cada I1, I2, ...., Ik es un


inicializador dimensional.

Ing. Oscar ALberto Barnett Contreras

Declaracin de array MD

Ejemplo usando el operador new:

double mat1[ ][ ] = new double[4][5]; Crea un array bidimensional de 4 filas x 5 columnas. Todos los 20 elementos son iniciados con 0.0

Ejemplo usando un inicializador kdimensional, para un array de 2 dimensiones:

int mat2[ ] [ ] = {{1, 2, 3}, {4, 5, 6}}; Se crea un array de dos dimensiones 2 x 3. Los elementos son iniciados:
mat2[0][0]=1 mat2[0][1]=2 mat2[0][2]=3 mat2[1][0]= 4 mat2[1][1]= 5 mat2[1][2]= 6

Ing. Oscar ALberto Barnett Contreras

Procesos en un array MD
Para procesar todos los elementos de un array bidimensional, se necesita un for embebido dentro de otro for, por ejemplo: Si int[ ][ ] A = new int[3][4];
El siguiente doble lazo, almacena 0 en cada posicin del array bidimensional A :

for (int fila = 0; fila < 3; fila++) { for (int columna = 0; columna < 4; columna++) { A [fila][columna] = 0; } }
Ing. Oscar ALberto Barnett Contreras

public class MaxMin { public static void main(String[] args) { double mat[ ] [ ]= { {2.3, 5.1, 9.9}, {8.3, 4.5, 7.7}, { 5.2, 6.1, 2.8}; }; int n = mat.length; Al ejecutar, se obtiene: int m = mat[0].length; double maxmin = 0.0; El valor max-min es 4.5 for (int j = 0; j < m; j++) { double min = mat[j][0]; for (int i = 1; i < n ; i ++) { min = Math.min(min, mat[i][j]); } if (j==0) { maxmin = min; }else { maxmin = Math.max(maxmin, min); } } System.out.println(El valor max-min es + maxmin); } }
Ing. Oscar ALberto Barnett Contreras

You might also like