0% encontró este documento útil (0 votos)
6 vistas20 páginas

Introducción a Arrays en Java

El documento proporciona una introducción al uso de arrays en Java, explicando su declaración, creación, inicialización y acceso a elementos. Se diferencia entre arrays y vectores, se abordan arrays multidimensionales y se presentan ejemplos de cómo utilizarlos en métodos. Además, se menciona la clase Arrays y sus métodos útiles para manipular arrays.

Cargado por

saracoartediez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas20 páginas

Introducción a Arrays en Java

El documento proporciona una introducción al uso de arrays en Java, explicando su declaración, creación, inicialización y acceso a elementos. Se diferencia entre arrays y vectores, se abordan arrays multidimensionales y se presentan ejemplos de cómo utilizarlos en métodos. Además, se menciona la clase Arrays y sus métodos útiles para manipular arrays.

Cargado por

saracoartediez
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Lenguaje Java

Clases Predefinidas:
arrays, ..

IES Luis Vives 1


José Manuel Pérez Lobato
Arrays
• Sirven para almacenar varios datos del mismo tipo, por
ejemplo varios números enteros, varios objetos de la clase
Empleado, etc. En Java existen 2 posibilidades Arrays y
Vectores. En otros lenguajes de programación no orientada
a objetos sólo se utilizan los arrays.

• Los arrays son de tamaño fijo, una vez creados

• Los Vectores pueden cambiar de tamaño dinámicamente


(invocando métodos que extienden su tamaño).

• Veremos ahora los arrays

IES Luis Vives 2


José Manuel Pérez Lobato
Declaración de Arrays (1 dimensión)
• Sintaxis:
TipoDatos nombreArray [];
o también
TipoDatos []nombreArray;
El TipoDatos indicará la naturaleza
de cada una de las componentes del
array, puede ser un tipo simple o
un nombre de clase

IES Luis Vives 3


José Manuel Pérez Lobato
Creación de arrays
• Los arrays son objetos, y por tanto deben instanciarse con new .
• El tamaño del array se define cuando se instancia y se decide en tiempo
de ejecución:
TipoDatos nombrearray[]; //sólo la referencia
TipoDatos nombrearray2[] = new TipoDatos[Tamaño];
• Por ejemplo:
int un_array[]; /*define "un_array" como un objeto array de enteros */
un_array=new int[5]; /* crea (instancia) el array, con capacidad para 5
enteros */
int [] x, y; // define 2 arrays
x= new int[5];
y= new int[3];

Otra forma de crear e inicializar arrays


int z[]={1,7,3,6}; //Crea una array de 4 casillas con los valores 1,7,3 y
6 (el 1 en la casilla 0, el 7 en la 1,…

IES Luis Vives 4


José Manuel Pérez Lobato
Utilización de Arrays
• El acceso a los elementos del array se realiza haciendo uso de
los corchetes [ ] y colocando entre ellos la posición a la que se
accede:
datos[0] datos[1] datos[2]
• El primer elemento de un array es el 0
• La indexación debe hacerse mediante valores, variables o
expresiones de los tipos byte, short, int o char (no son válidos
los long, float, double o boolean).
• Java comprueba durante la ejecución que el acceso a los
elementos de un array no excede sus límites (esto provocaría
una excepción ArrayIndexOutOfBoundsException).

IES Luis Vives 5


José Manuel Pérez Lobato
Arrays Multidimensionales
• Se pueden crear arrays de más de 1 dimensión,
int datos[][]= new int[8][10]; //tablero

• Un array bidimensional es un array de arrays, cada componente


puede ser de distinto tamaño.
• La instanciación de los arrays multidimensionales puede realizarse
por partes:creando primero el array y después sus componentes
int pp[]={5,4,8,2,7,6,9};
int matriz[][]=new int[4][];//array de 4 arrays
matriz[0]=new int[4];//componente 0 es array con espacio para 4
valores

matriz[1]=pp;//componente 1=array ya existente


matriz[2]=new int[5];//comp.2=array de 5 int
matriz[3]={3,2};//último componente= 2 valores

IES Luis Vives 6


José Manuel Pérez Lobato
Arrays Multidimensionales
Se crea sin
contenido más tarde se asocia a arrays reales,
nuevos o ya existentes
matriz[4][] matriz

null int[4]
matriz[0]=new int[4];
null ?
matriz[1]=pp;
5 ?
null null 4 ?
?
null 8
null
2 un array
7 nuevo
6
9

pp (array ya
existente)

IES Luis Vives 7


José Manuel Pérez Lobato
Inicialización de un Array

• Se puede inicializar un array cuando se declara


– crea un array de 10 enteros
int datos[ ] = {10,11,22,33,44,15,6,7,8,9};
– array bidimensional, la fila 0 es 1,2; la
fila 1 es 3,4,5
int b[][] = { {1,2}, {3,4,5} };
Debe recordarse que un array es un objeto, y por tanto una
referencia a dónde se encuentran los valores.

IES Luis Vives 8


José Manuel Pérez Lobato
Longitud de un Array
• La longitud de un array se puede consultar mediante
[Link]
• Ejemplo:
int a[]={2,4,8,16,32,64,128,256};
[Link]("La longitud del array
a es "+ [Link]); // 8

int b[][]=new int[3][5];


[Link]([Link]+”,“+
b[0].length); // 3 , 5

IES Luis Vives 9


José Manuel Pérez Lobato
Uso de Arrays en métodos
• Un array puede
– Ser pasado como parámetro a un método
public static void main (String arg[])
El paso es por referencia, por lo que si se modifica, las modificaciones
permanencen en el objeto utilizado al llamar al método.
– Ser devuelto como resultado de la ejecución de un método
NombreClase [] metodo();

IES Luis Vives 10


José Manuel Pérez Lobato
Ejem. Array 1a
class Imaginario {
double pr; // parte real;
double pi; //parte imaginaria
Imaginario (){
pr=pi=0;
}
Imaginario (double r, double i){
pr=r;
pi=i;
}
void setPI ( double i) { pi=i; }
double getPI ( ) { return pi;}
}

IES Luis Vives 11


José Manuel Pérez Lobato
Ejem. Array 1b
class VectorImag{
public static void main (String arg[]) throws IOException{
//vector con referenc. para 10 objetos de clase Imaginario :

Imaginario v[]= new Imaginario[10];


/* Creo espacio para los números y les asigno a los 5 primeros el valor 0+0i y a los
otros x+yi donde x=5..9 e y=50,60..90; */

for(int i=0; i<5; i++) v[i]=new Imaginario();


for(int i=5; i<[Link]; i++) v[i]=new Imaginario(i,i*10);

//Incremento el valor de la parte imaginaria en 1 unidad

for (int i=0; i<[Link]; i++) v[i].setPI(v[i].getPI()+1);


for (int i=0; i<[Link]; i++)
[Link]
("v["+i+"]="+v[i].getPR()+"+"+v[i].getPI()+"i");
}
}

IES Luis Vives 12


José Manuel Pérez Lobato
Ejem Array 2a
class PasoArrays{ void mostrar (int x[][]) {
void mostrar (int x[]) { for (int i=0; i< [Link]; i++) {
for (int i=0; i< [Link]; i++) for (int j=0; j< x[i].length; j++)
[Link] ("x["+i+"]="+x[i]+","); [Link]
[Link] (); ("x["+i+"]["+j+"]="+x[i][j]+",");
} [Link] ();
}
void ponerACero (int x[]){ }
[Link] (”A 0 array 1 dim. "); void ponerACero (int x[][]){
for (int i=0; i< [Link]; i++) x[i]=0; [Link] (" A 0 array 2 dim. ");
} for (int i=0; i< [Link]; i++)
for (int j=0; j< x[i].length; j++)
int [] ponerACero (){ x[i][j]=0;
int [] x=new int[3]; }
[Link] (" A 0 array 1 dim. b"); /* no podemos tener un método que reciba los
for (int i=0; i< [Link]; i++) x[i]=0; mismos parámetros y devuelva algo distinto.
Es erróneo tener un método:
return (x);
int [][] ponerACero (){ ...}*/
}

IES Luis Vives 13


José Manuel Pérez Lobato
Ejem Array 2b
public static void main (String []args){
PasoArrays ej= new PasoArrays();
int v1a[];
int v1[]= new int [3], v1a=[Link]();
for (int i=0; i< [Link]; i++) v1[i]=i*10; [Link](v1a);
int v2[][]=new int [3][4]; /*Seria erroneo poner:
for (int i=0; i< [Link]; i++) int v2a[][];
for (int j=0; j< v2[i].length; j++) v2a=[Link]();
v2[i][j]=i*10+j;
*/
[Link](v1); }
//No puedo poner [Link](v1[0]);
}
[Link](v2);
[Link](v1);
[Link](v2);
[Link](v1);
[Link](v2);
[Link](v2[0]);
//No puedo poner [Link](v2[1][2]);

IES Luis Vives 14


José Manuel Pérez Lobato
Ordenar array
void ordenarMenorMayorMet1(int []v){
int posMenor,menor;
for (int j=0;j<[Link]-1; j++){
posMenor=j;
menor= v[j];
for (int i=j+1; i<[Link]; i++){
if (menor >v[i]){
menor=v[i];
posMenor=i;
}
}
v[posMenor]=v[j];
v[j]= menor;
}
}

IES Luis Vives 15


José Manuel Pérez Lobato
Ordenar array burbuja
void burbuja(int []v){
int aux;
boolean ordenado=false;
for (int j=0; j<[Link]-1 && !ordenado; j++){
ordenado=true;
for (int i=0; i<[Link]-1-j; i++)
if (v[i]>v[i+1]){
aux=v[i+1];
v[i+1]=v[i];
v[i]=aux;
ordenado=false;
}
[Link]("Pasada número:"+j);
}
}

IES Luis Vives 16


José Manuel Pérez Lobato
Ejercicios Arrays
• Hacer los métodos de la clase MatrizNxM que
– De el mayor valor de la matriz
– De la posición del mayor valor
– De los 2 mayores valores
• Hacer un programa que lea números de 1 dígito (0..9) del teclado e indique
cuantos se han leído de cada tipo (5 de valor 0,3 de valor 1,6 de valor 2...)
• Dada la clase
class Persona {
char estadocivil; //c=casada, s=soltera, v=viuda
int sueldo;
boolean mujer;}
construir una clase ArrayPersona que permita almacenar los datos de 100
personas y que posea métodos para calcular:
– El número de mujeres
– El número de hombres casados
– Si el sueldo medio de los hombres solteros es mayor que el de los hombres
casados IES Luis Vives 17
José Manuel Pérez Lobato
Ejercicios Arrays: Buscaminas
• Realizar una aplicación simplificada del buscaminas. Se tendrá un tablero de
10x10 casillas en el que se colocará una serie de bombas (tantas como se
indique en el parámetro recibido a la hora de invocar al programa, y ni una
menos) las bombas se colocaran de manera aleatoria. El jugador deberá indicar
las coordenadas de una casilla y se le mostrara cuantas bombas hay alrededor
de la misma (se valorara la utilización del menor numero de if posible).
• Se utilizara el método int leerNumero() de la clase Teclado
• Se implementara una clase Tablero en la que se incluirá el tablero de 10x10 y
todos los métodos necesarios para realizar la aplicación.
• El método main, que estará en la clase Buscaminas, deberá pedir las
coordenadas de las casilla al usuario (hasta que al menos una de ellas sea -1) y
para cada par de coordenadas deberá mostrar el numero de bombas que hay
alrededor de la casilla.

IES Luis Vives 18


José Manuel Pérez Lobato
La clase Arrays
• La clase Arrays proporciona varios métodos para trabajar directamente con
arrays:
– binarySearch(int[] a, int numBuscado) Busca en el array a si
aparece numBuscado usando algoritmo de búsqueda binaria por lo
que el array tiene que estar ordenado. Devuelve la posición.
– equals(int[] a, int[] a2). Devuelve true si los 2 arrays son iguales
(tienen los mismos números en las mismas posiciones)
– fill(int[] a, int val) Rellena todas las casillas de a con el valor val.
– sort(int[] a) Ordena el array a en orden ascendente. Para objetos
usar el interfaz Comparable. El array no puede tener elementos a
null.
• De todos ellos hay versiones para otros tipos de datos.

• Documentación adicional: [Link]


arraylist-en-java/

IES Luis Vives 19


José Manuel Pérez Lobato
La clase Arrays
import [Link];
public class ClaseArraysJava { void mostrar(int v[]){
public static void main(String[] args) { for (int i=0; i<[Link]; i++)
ClaseArraysJava o = new ClaseArraysJava(); [Link](v[i]+":");
int v[]={3,6,2,8,4,9,1,2}; [Link]();
int v2[]={3,6,2,8,4,9,1,2}; }
int buscado=2;
[Link](v);
[Link](v);
int pos=[Link](v, buscado);
[Link]("posición del "+buscado+":" + pos);
[Link]([Link](v, v2));
[Link](v2,3);
[Link](v2);
}
}
IES Luis Vives 20
José Manuel Pérez Lobato

También podría gustarte