Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arreglos
Arreglos
Arreglos
Un arreglo es una secuencia de datos del mismo tipo Los datos se llaman elementos del arreglo y se numeran 0, 1, 2, ... Estos nmeros localizan al elemento dentro del arreglo y se denominan ndices En Java, los ndices del arreglo empiezan con 0 y terminan con el tamao del arreglo -1 Si el arreglo tiene n elementos, se denotan como a[0], a[1], ... a[n-1]
Declaracin de un arreglo
Ejemplos: char cad[], p; int [] v, w; double [] m, t[], x; En la declaracin del arreglo no se permite indicar el nmero de elementos, as, int numeros[12] es erroneo
Java considera cada arreglo como un objeto El nmero de elementos de un arreglo se conoce accediendo al campo length double [] v = new double [15] System.out.print(v.length); // escribe 15 El campo length est protegido, no se puede modificar
Inicializacin de arreglos
Se deben asignar valores a los arreglos antes de utilizarlos, por defecto se inicializan con 0
precios[0] = 10; precios[1] = 20; precios[2] = 30; int numeros[]={10, 20, 30, 40, 50, 60}; char c[]={'L','u','i','s'}; final int ENE=31, FEB=28, MAR=31,ABR=30; int meses[]={ENE, FEB, MAR, ABR}; for(i=0; i<numeros.length; i++) numeros[i] = -1;
Copia de arreglos
v1[i]=(int)Math.random()*199+1;
Arreglos multidimensionales
Los arreglos vistos son unidimensionales, se conocen tambin como listas (vectores) Los arreglos multidimensionales tiene ms de una dimensin. Los de dos dimensiones, se llaman tablas o matrices Sintaxis:
<tipo datoelemento> <nombreArreglo>[][] <tipo datoelemento> [][] <nombreArreglo> char pantalla[][]; pantalla = new int[10][5];
Arreglo bidimensional
Es un arreglo de arreglos, es decir, un arreglo unidimensional donde cada elemento es un arreglo Arreglo de 4 renglones y 2 columnas: int tabla[][]=new int[4][2]; si cada entero ocupa 4 bytes:
Elemento Posicin relativa en memoria
0 4 8 12 16 20 24 28 Tabla[0][0] Tabla[0][1] Tabla[1][0] Tabla[1][1] Tabla[2][0] Tabla[2][1] Tabla[3][0] Tabla[3][1]
int []a={1,3,5}, b={2,4,6,8,10}; int mtb[][]={a, b}; double [][]gr=new double[3][]; gr[0]=new double[3]; gr[1]=new double[6]; gr[2]=new double[5];
En un arreglo bidimensional tabla, length de tabla contiene el nmero de renglones, y length de cada rengln contiene el nmero de columnas
float ventas[][]={{0.,0.,0.},{1.0,1.0},{-1.0}};
System.out.print(ventas.length); //escribe 3
System.out.print(ventas[0].length); //escribe 3 System.out.print(ventas[1].length); //escribe 2 System.out.print(ventas[2].length); //escribe 1
Lectura y visualizacin
import input.Keyboard; class Tabla { public static void main(String[] a){ int[][]=new int[3][5]; leer(a); visualizar(a); } static void leer(int b[][]){ Int i,j; System.out.println(Mete datos a matriz); for(i=0;i<b.length; i++){ System.out.println(Rengln: +i); for(j=0;j<b[i].length; j++) b[i][j]=Keyboard.readInt(); } }
Java proporciona la posibilidad de almacenar varias dimensiones, por ejemplo un arreglo de tres dimensiones Un arreglo tridimensional:
int volumen[][][]=new[181][178][190];
Y Z
System.arraycopy
arraycopy(Object src, int srcPos, Object dest, int destpos, int length) Copia un arreglo desde el arreglo fuente especificado, empezando en la posicin especificada, hasta la posicin especificada del arreglo destino El nmero de componentes copiados es igual al argumento length. Los componentes en las posiciones srcPos hasta srcPos+length-1 en el arreglo fuente se copian en las posiciones destPos hasta destPos+length-1, respectivamente, del arreglo destino.
Ejemplo de arreglo
public class ArrayPlay{ int[] intarray = new int[0]; public static void main(String[] args){ ArrayPlay arrayplay = new ArrayPlay(); arrayplay.play(); }
//Juega con el arreglo de enteros intarray public void play(){ System.out.println("There are no elements."); printArray(); //there are no elements System.out.println("Adding an element with value intarray = addArrayElement(5); printArray(); //there is 1 element System.out.println("Adding an element with value intarray = addArrayElement(33); printArray(); //there are 2 elements System.out.println("Adding an element with value intarray = addArrayElement(26); printArray(); //there are 3 elements System.out.println("Adding an element with value intarray = addArrayElement(78); printArray(); //there are 4 elements System.out.println("Adding an element with value intarray = addArrayElement(345); printArray(); //there are 5 elements System.out.println("Removing element at position intarray = removeArrayElement(2);
printArray(); //there are 4 elements System.out.println("Removing element at position 1."); intarray = removeArrayElement(1); printArray(); //there are 3 elements System.out.println("Inserting an element at position 2 with value 717783."); intarray = insertArrayElement(2,717783); printArray(); //there are 4 elements }
/** Despliega tamao del arreglo. */ public void printArray(){ System.out.println("Size of intarray is "+ String.valueOf(intarray.length) + "."); for (int i = 0;i < intarray.length;i++){ System.out.println("Array intarray["+ String.valueOf(i) + "] = " + String.valueOf(intarray[i])); } }
/** Crea un nuevo arreglo de intarray saltando el elemento n. */ public int[] removeArrayElement(int n){ int[] newarray = new int[intarray.length - 1]; for (int i = 0;i < intarray.length;i++){ if (i < n) newarray[i] = intarray[i]; if (i > n) newarray[i-1] = intarray[i]; } return newarray; }
/** Crea un nuevo arreglo de intarray agregando un elemento con valor n. */ public int[] addArrayElement(int n){ int[] newarray = new int[intarray.length + 1]; for (int i = 0;i < intarray.length;i++){ newarray[i] = intarray[i]; } newarray[intarray.length] = n; return newarray; }
/** Crea un nuevo arreglo de intarray insertando un nuevo elemento en el ndice j con valor n. */ public int[] insertArrayElement(int j,int n){ int[] newarray = new int[intarray.length + 1]; for (int i = 0;i < intarray.length+1;i++){ if (i < j) newarray[i] = intarray[i]; if (i j) newarray[i] = n; if (i > j) newarray[i] = intarray[i-1]; } return newarray; } }