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++)
{ [Link](LLUVIA PARA EL MES + (i+1)); lluvia[i] = [Link](); suma += lluvia[i]; } mediaAnual = suma/12; [Link](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++) {
[Link]( lluvia[i] ); diferencia = [Link](lluvia[i]- mediaAnual); [Link]( 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 < [Link]; 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 < [Link]; i++) { [Link]("LLUVIA PARA EL MES DE + nombreMes[i]); lluvia[i]=(double) [Link](); } for(int i = 0; i < [Link]; i+=2) sumaMesImpar += lluvia[i];
mediaMesImpar = sumaMesImpar/6; for(int i = 1; i < [Link]; 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 [Link]("Desordenados\n"); for(i = 0; i<n; i++) [Link](d[i]); [Link]("\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++) [Link](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 = [Link](); bandera = 0; for(i = 0; i<[Link]; 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 = [Link]; 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 = [Link](min, mat[i][j]); } if (j==0) { maxmin = min; }else { maxmin = [Link](maxmin, min); } } [Link](El valor max-min es + maxmin); } }
Ing. Oscar ALberto Barnett Contreras