Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Arrays
En Temas anteriores hemos estudiado los tipos de datos, tanto primitivos como
complejos. Hemos visto como trabajar con datos de ambos tipos, pero siempre de una
manera unitaria. En este Tema veremos como trabajar con conjuntos de datos a través
de los arrays.
Un array o colección nos permite trabajar con un conjunto de datos, todos del mismo tipo,
que pueden ser primitivos o complejos (=referencias).
En este Tema se estudian los arrays, las colecciones se estudiarán más adelante. Las
colecciones se crean a partir de clases especificas de la API de Java y los datos que
guardan son siempre de tipo complejo.
1. Arrays
5. Paso de arrays a los métodos. Notas acerca del paso de argumentos a los métodos.
Pasar un argumento tipo array
Pasar un elemento individual de un array a un método
Notas acerca del paso de argumentos a los métodos
6. Arrays multidimensionales
1-57
Tema 9. Arrays
1. Arrays
Los tipos en Java se dividen en dos categorías: tipos primitivos (byte, short, int, long, float,
double, boolean y char) y tipos de referencia o complejos.
Un array es una estructura de datos que permite albergar varios elementos del mismo
tipo.
2-57
Tema 9. Arrays
c[0] -45
c[1] 20
c[2] 72
c[3] 0
c[4] 45
c[5] 12
c[6] 0
c[7] -27
c[8] 789
c[9] 91
c[10] 6453
c[11] 78
El primer elemento tiene el índice cero, y algunas veces se le denomina elemento cero.
Por lo tanto, los elementos del array c son c[ 0 ], c[ 1 ], c[ 2 ], …., c[10] y c[11]. El mayor
índice en el array c es 11.
Los nombres de los array siguen las mismas convenciones que los demás nombres de
variables.
Un índice debe ser un entero positivo. Un programa puede utilizar una expresión como
índice. Por ejemplo, si suponemos que la variable a es 5 y que b es 6, entonces la
instrucción
c[ a + b ] += 2;
c[11]=c[11]+2
Error:
Usar un valor de tipo long como índice de un array produce un error de
compilación. Un índice debe ser un valor int, o un valor de un tipo que pueda
promoverse a int; a saber, byte, short o char, pero no long.
Los arrays son objetos. Cada instancia de un objeto conoce su propia longitud y mantiene
esta información en un campo length. La expresión c.length accede al atributo público
length del array c.
3-57
Tema 9. Arrays
Importante:
Para conocer la longitud de un array, podremos acceder a su atributo
público:length.
c[0] -45
c[1] 20
c[2] 72
c[3] 0
45
12
0
c[7] -27
789
91
6453
c[11] 78
Para calcular la suma de los valores contenidos en los primeros tres elementos del array c
y almacenar el resultado en la variable suma, escribiríamos lo siguiente:
suma = c[ 0 ] + c[ 1 ] + c[ 2 ];
x = c[ 6 ] / 2;
Para dividir el segundo elemento entre el primer elemento y asignar el resultado al quinto
elemento del array, escribiríamos lo siguiente:
c[4]=c[1] / c[0]
4-57
Tema 9. Arrays
La sintaxis es la siguiente:
tipo[ ] nombre;
o
tipo nombre [ ];
int[ ] c;
int c[ ];
El array puede ser una variable local o un atributo. Si el array es un atributo podemos añadir el
modificador de acceso:
Ejemplos:
5-57
Tema 9. Arrays
Declarar múltiples variables tipo array en una sola declaración puede provocar errores sutiles, como
muestra el anterior ejemplo.
Recomendación:
Mantén cada declaración en una línea separada e incluye un comentario que
describa a la variable que está declarando.
Al igual que los demás objetos, los arrays se crean con la palabra clave new, tanto para
arrays que contengan tipos primitivos como para los que contengan tipos complejos. La
sintaxis de la creación de un array es:
Ejemplos:
Los arrays hay que inicializarlos o crearlos para que se puedan utilizar. Un array sin
inicializar (new) no se puede utilizar.
6-57
Tema 9. Arrays
Ejemplo 1. Prueba los siguientes códigos en una clase de Pruebas. ¿Qué se imprime en
la consola?
1) 2)
public static void main(String[] args) { public static void main(String[] args) {
int[] arrayC; int[] arrayC= null;
System.out.println(arrayC); System.out.println(arrayC);
}
}
3)
int[ ] c; ← declaración
c = new int[ 12 ]; ← creación
Un programa puede crear varios arrays en una sola instrucción, por ejemplo:
Al crear un array, cada uno de sus elementos recibe un valor predeterminado: cero para
los elementos numéricos de tipos primitivos, false para los elementos boolean y null para
las referencias (cualquier tipo no primitivo). Como pronto veremos, podemos proporcionar
valores iniciales para los elementos al crear un array.
7-57
Tema 9. Arrays
Importante:
Una vez hayamos creado un array, todas sus posiciones son inicializadas al valor
por defecto del tipo de variable que albergue: Es decir, 0 ó 0.0 si se trataba de un
número, false si se trataba de un boolean y null si se trataba de un tipo complejo.
2.4 El nombre del array contiene la dirección de memoria del contenido del array
La expresión anterior
crea un array que contiene 12 elementos int y almacena la referencia del array en la variable c, por
lo tanto, c es una variable que hará referencia a un array de valores int (es decir, c almacenará una
referencia a un objeto array).
8-57
Tema 9. Arrays
Importante.
Un programa puede declarar arrays de cualquier tipo. Cada elemento de un array de tipo
primitivo contiene un valor del tipo declarado. De manera similar, en un array de un tipo de
referencia, cada elemento es una referencia a un objeto del tipo declarado. Por ejemplo, cada
elemento de un array int es un valor int, y cada elemento de un array String es una
referencia a un objeto String.
9-57
Tema 9. Arrays
Ejemplo3. Declara un array llamado “array” de enteros (los elementos son de tipo entero),
con 10 elementos y muestra su contenido.
Indice Valor
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
Observa que los elementos del array se han inicializado a un valor automáticamente.
Utiliza una única clase que contenga el método main para realizar el ejemplo.
…
}
}
Importante:
Es imposible acceder a una posición fuera del array en tiempo de ejecución.
Llegado el caso se lanzará una excepción del tipo ArrayIndexOutOfBoundException
Solución
10-57
Tema 9. Arrays
Ejemplo 4. Igual que el ejemplo anterior, pero realiza el recorrido en orden inverso.
Indice Valor
9 0
8 0
7 0
6 0
5 0
4 0
3 0
2 0
1 0
0 0
Solución
11-57
Tema 9. Arrays
Esta declaración no requiere que new cree el objeto array. Cuando el compilador
encuentra la declaración de un array que incluye una lista inicializadora, cuenta el número
de inicializadores en la lista para determinar el tamaño del array y asigna el valor a cada
elemento.
El array tiene una longitud de 10 elementos cuyo valor se introduce mediante una lista
inicializadora:
int array[] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
Solución
public class Ejemplo5 {
12-57
Tema 9. Arrays
Ejemplo 6. Crea un array de 20 elementos y asigna a cada elemento uno de los enteros
pares del 2 al 40 (2, 4, 6, 8, ..., 40).
No utilices una lista inicializadora para asignar los valores a los elementos del array.
Ejemplo 7. Crea un array denominado nota de diez elementos, que guarde en cada
elemento una nota (números enteros del 1 al 10) introducida por consola. Después, la
aplicación muestra el array en formato tabular, como en los anteriores ejemplos.
13-57
Tema 9. Arrays
A menudo, los elementos de un array representan una serie de valores que se emplearán
en un cálculo.
Ejemplo8. Crea un array de 10 elementos denominado nota. Las notas (números del 1.0
al 10.0) se introducen por el teclado, después, calcula e imprime su media.
Ejemplo9. En el ejemplo 6 del anterior tema hicimos un programa que demostraba que
los números que produce el método nextInt de la clase Random ocurren con una
probabilidad aproximadamente igual, simulamos 6000 tiradas de un dado y guardamos su
frecuencia en seis contadores. ¿Como mejorarías el programa utilizando un array?
El siguiente código representa la solución del ejemplo 6 del tema anterior, mejora el
código utilizando un array.
package tema8;
import java.util.Random;
public class TirarDado {
14-57
Tema 9. Arrays
Los casos que se pueden presentar están en función de que el vector esté o no ordenado
y pueda tener o no, elementos repetidos.
En los casos en los que puede aparecer el valor repetido, el algoritmo debe recorrer el
vector hasta el último elemento si se desea conocer cuantas ocurrencias tiene el
elemento.
Ejemplo 10. Guarda en un array 100 números (enteros aleatorios comprendidos entre el 1
y el 100), recorre dicho array y determina si se encuentra el número 5 y si está, determina
también cuantas veces está.
int numeros[] = { 2, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 30, 33, 35, 36, 39, 40, 42, 50}
15-57
Tema 9. Arrays
A B H J K M P R T W
0 9
Algoritmo:
izq=0
der=9 (v.length-1)
si v[cen]=valor
elemento encontrado.
sino
si valor> v[cen]
izq=cen+1
sino
der=cen-1
fin_si
fin_si
La búsqueda finalizará:
El tramo de búsqueda se reduce hasta el punto de quedar anulado, es decir, izq > der.
16-57
Tema 9. Arrays
Algoritmo de BusquedaDicotomica
izq, cen, der: variables numéricas enteras.
letra [50]: un array de caracteres de 50 elementos
valor: carácter
izq=0
der=letra.length -1
cen = ( izq+der)/2
escribir “Deme el elemento que desea buscar”
leer valor
si valor>letra[cen]
izq=cen+1
sino
der=cen-1
fin_si
cen=(izq+der)/2
fin_mientras
si valor=letra[cen]
escribir “Elemento encontrado en la posición”, cen
sino
escribir “No existe el valor buscado”
fin_si
Fin_Algoritmo
int numeros[ ] = { 2, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 19, 20, 30, 33, 35, 36, 39, 40, 42, 50}
Crea e inicializa el array, y en el mismo programa pide al usuario que introduzca un número, el
programa buscará dicho número en el array devolviendo si existe su posición, es decir, el índice
del elemento del array donde se encuentra el número buscado. Utiliza el algoritmo de la
búsqueda dicotómica.
17-57
Tema 9. Arrays
Existen varios algoritmos de ordenación, pero sólo estudiaremos el algoritmo de ordenación por
intercambio o de la burbuja.
Método de la Burbuja
Secuencia Inicial:
Para intercambiar la posición de dos elementos del vector usamos una variable auxiliar:
aux=v[i]
v[i]=v[i+1]
v[i+1]=aux
SECUENCIA INICIAL 9 7 4 3
18-57
Tema 9. Arrays
para (pas=1;pas<notas.longitud;pas=pas+1)
para( elem=0;ele<notas.longitud-pas;ele=ele+1)
si notas[ele]>notas[ele+1]
aux=nota[ele]
nota[ele]=nota[ele+1]
nota[ele+1]=aux
fin_si
fin_para
fin_para
Fin_Algortimo
Ejemplo 13.
19-57
Tema 9. Arrays
Una mejora del método de la burbuja consiste en detectar cuando el vector está ordenado
y dejar, entonces, de hacer pasadas.
Secuencia Inicial:
sw=0
----------------------------------
sw=1
1ª PASADA 3 7 4 9
3 4 7 9 sw=0 //se ha producido un intercambio
3 4 7 9
----------------------------------
sw=1
2ª PASADA 3 4 7 9
3 4 7 9 no hay intercambio.
20-57
Tema 9. Arrays
sw=false
para( elem=0;ele<notas.longitud-pas;ele=ele+1)
si notas[ele]>notas[ele+1]
aux=nota[ele]
nota[ele]=nota[ele+1]
nota[ele+1]=aux
sw=true
fin_si
fin_para
fin_para
Fin_Algortimo
21-57
Tema 9. Arrays
Tenemos que tener en cuenta que el array representa una estructura de datos estática, no
puede crecer, ni disminuir en tiempo de ejecución.
La actualización se deberá realizar sin dejar huecos, todos los elementos ocuparán
posiciones contiguas.
Un posible algoritmo:
int libre=0 //indica la posición del primer elemento libre del array
si (libre <nombreArray.length)
añadir elemento en la posición libre
libre++ //actualizamos la nueva posición libre
sino
escribir un mensaje que indique que el vector esta lleno
22-57
Tema 9. Arrays
Esta operación consiste en introducir un nuevo elemento en una posición intermedia del
vector, para lo cual es necesario desplazar una posición a la derecha todos aquellos
elementos partiendo de la posición en la queremos insertar el nuevo dato.
Un posible algoritmo:
Borrar un elemento
También se puede entender el borrado como un proceso “lógico”, como igualar a 0, a null,
a -1, etc las posiciones que no se quieran borrar sin desplazar los elementos,
dependiendo de la lógica que necesite el programa o de la propia elección del
programador.
Un posible algoritmo:
23-57
Tema 9. Arrays
Comprueba que el usuario introduce una de las opciones correctas (A, B, C o D).
Consideraciones:
- Antes de añadir ningún elemento el vector se encuentra vacío.
- Si se intenta añadir o insertar un nuevo elemento en el vector lleno, el programa
tiene que devolver: “Error, vector lleno”
- Si se intenta borrar un elemento en el vector vacío, el programa tiene que
devolver: “Error, vector vacío”
24-57
Tema 9. Arrays
A. Añadir un elemento
B. Borrar un elemento
C. Insertar un elemento
D. Salir de la aplicación
Elegir opción:
El vector se ha cargado con valor inicial -1, un valor fuera del rango de las posibles notas.
A tener en cuenta: la clase Scanner no tiene un método para leer un carácter, se tendrá
que leer un String. Tienes que buscar un método de la clase String que devuelva el
primer carácter de la cadena (String).
http://www.javaya.com.ar/detalleconcepto.php?codigo=100&inicio=20
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/string.htm
http://puntocomnoesunlenguaje.blogspot.com.es/2013/02/clase-string.html
25-57
Tema 9. Arrays
En los ejemplos anteriores hemos utilizado la instrucción for controlada por un contador
para iterar a través de los elementos en un array.
La instrucción for mejorada (Java SE 5.0), conocida también “for extendido” o “for each”,
itera a través de los elementos de un array o colección sin utilizar un contador (con lo
cual, evita la posibilidad de “salirse” del array).
En donde:
- parámetro tiene dos partes: un tipo y un identificador (por ejemplo, int numero). El
tipo del parámetro debe concordar (o poder promocionar 1) con el tipo del array.
Ejemplo
26-57
Tema 9. Arrays
El tipo del parámetro para el for mejorado es int, ya que array contiene valores int; la
instrucción for selecciona un valor int del array por cada iteración, el número de
iteraciones es igual al número de elementos del array.
La instrucción for mejorada itera a través de valores sucesivos en el array, uno por uno. El
encabezado del for mejorado se puede leer como “para cada iteración, asignar el
siguiente elemento del array a la variable numero”.
Por lo tanto, para cada iteración, el parámetro “numero” representa un elemento del array.
La instrucción for mejorada se puede utilizar en lugar de la instrucción for controlada por
contador, cuando el código que itera a través de un array no requiere acceso al contador
que indica el índice del elemento.
Ejemplo 17. Utilizando la instrucción “for mejorada” realiza una aplicación que obtenga la
media aritmética del array del ejemplo 16.
…
}
}
27-57
Tema 9. Arrays
5.-Paso de arrays a los métodos. Notas acerca del paso de argumentos a los métodos.
28-57
Tema 9. Arrays
Para demostrar que se modificaron los elementos del array1, se imprime en pantalla los
cinco elementos de array1 antes de llamar al método y después.
modificarArray( array1 );
Observación:
Muy importante:
29-57
Tema 9. Arrays
El programa demuestra que cuando se pasa una copia de un elemento de un array de tipo
primitivo (argumento) a un método, y se modifica su valor (parámetro) el elemento
original del array no se ve afectado.
Recuerda:
Los parámetros de los métodos, al igual que las variables locales, dejan de existir
cuando el método en el que se declaran termina su ejecución.
System.out.printf(
"\n\nEfectos de pasar el valor de un elemento del array:\n" +
"array[3] antes de modificarElemento: %d\n\n", array[ 3 ]);
modificarElemento( array[ 3 ] );
System.out.printf(
"array[3] después de modificarElemento: %d\n", array[ 3 ] );
}
30-57
Tema 9. Arrays
Cuando se pasa un argumento por valor, se pasa una copia del valor del argumento al
método que se llamó. Este método trabaja exclusivamente con la copia. Las
modificaciones a la copia del método que se llamó no afectan el valor de la variable
original en el método que hizo la llamada.
Cuando se pasa un argumento por referencia, el método que se llamó accede al valor del
argumento a través de la referencia, y puede modificar su valor. El paso por referencia
mejora el rendimiento, al eliminar la necesidad de copiar cantidades de datos
posiblemente extensas.
A diferencia de otros lenguajes, Java no permite a los programadores elegir el paso por
valor o el paso por referencia; todos los argumentos se pasan por valor. Ahora bien,
una llamada a un método puede pasar dos tipos de valores:
31-57
Tema 9. Arrays
Ejemplo 20. Ejemplo POO con un clase que define un array como atributo.
Crea la clase LibroCalificaciones con un array para almacenar las calificaciones y la clase
PruebaLibroCalificaciones según se indica.
LibroCalificaciones
- nombreAsignatura: String
- calificaciones[]: int
<constructor>LibroCalificaciones(nombre: String, arrayCalif: int[])
+ setNombreAsignatura(nombre: String)
+ getNombreAsignatura():String
+ mostrarMensaje()
+ imprimirCalificaciones()
+ procesarCalificaciones()
- obtenerMinima(): int
- obtenerMaxima(): int
- obtenerPromedio(): double
El método imprimirCalificaciones muestra las notas de todos los estudiantes, ver ejemplo
de ejecución.
El método procesarCalificaciones realiza una serie de cálculos sobre los datos llamando
secuencialmente a los métodos:
32-57
Tema 9. Arrays
La clase PruebaLibroCalificaciones
Estudiante 1: 8
Estudiante 2: 6
Estudiante 3: 4
Estudiante 4: 0
Estudiante 5: 3
Estudiante 6: 8
Estudiante 7: 5
Estudiante 8: 1
Estudiante 9: 7
Estudiante 10: 5
33-57
Tema 9. Arrays
6 Arrays multidimensionales
Los arrays que requieren dos índices para identificar un elemento específico se llaman
array bidimensionales (los array multidimensionales pueden tener más de dos
dimensiones).
La siguiente figura ilustra un array bidimensional llamado a, que contiene tres filas y
cuatro columnas (es decir, un array de tres por cuatro). En general, a un array con m filas
y n columnas se le llama array de m por n.
nº de columnas
nº de filas
Todas las celdas (elementos) deben tener el mismo tipo de contenido o lo que es lo
mismo, cada elemento de la tabla bidimensional es de un determinado tipo primitivo o tipo
complejo.
34-57
Tema 9. Arrays
35-57
Tema 9. Arrays
Ejercicio : define los tres arrays bidimensionales (descritos anteriormente) con un nombre
significativo y de un tipo que nos permita guardar la información requerida.
1 2
3 4
36-57
Tema 9. Arrays
Ejemplo 21. Crea e inicializa con una lista de valores las tablas array1 y array2 según los
siguientes valores:
123
456
129
310
456
Ejemplo 22. Crea e inicializa con una lista de valores la tabla array2 según los siguientes
valores:
129
310
456
Ejemplo 23. Crea e inicializa con una lista de valores la tabla array2 según los siguientes
valores:
129
310
456
Obten los valores del array (fila, columna y valor) superiores a la media de todos los
elementos del array.
37-57
Tema 9. Arrays
3 4 5 7 15
6 4 5 6 9
Y la matriz B:
2 1 5 7 1
2 4 5 0 9
Escribir su contenido.
Ejemplo 25. Crea e inicializa con una lista de valores las tablas array1 y array2 según los
siguientes valores:
123
456
129
310
456
Muestra su contenido desde un método. Tienes que pasar al método la referencia del
array, el número de filas y columnas
38-57
Tema 9. Arrays
en realidad es:
39-57
Tema 9. Arrays
Java permite crear arrays con filas de distinta longitud(distinto número de columnas).
Ejemplo:
int b[ ][ ] = { { 1, 2 }, { 3, 4, 5 } };
Crea el array entero b con dos elementos que representan las filas del array
bidimensional.
fila 0 1 2
fila 1 3 4 5
También se puede declarar un arrays bidimensional con filas de distintas longitudes sin
utilizar listas inicializadoras, por ejemplo:
Estas instrucciones crean un array bidimensional con dos filas. La fila 0 tiene cinco
columnas y la fila 1 tiene 3 columnas.
40-57
Tema 9. Arrays
41-57
Tema 9. Arrays
Con las listas de argumentos de longitud variable podemos crear métodos que reciben un
número arbitrario de argumentos.
La especificación de “...” puede ocurrir sólo una vez en una lista de parámetros y debe
colocarse al final de la lista.
42-57
Tema 9. Arrays
}
}
d1 = 10,0
d2 = 20,0
d3 = 30,0
d4 = 40,0
El promedio de d1 y d2 es 15,0
El promedio de d1, d2 y d3 es 20,0
El promedio de d1, d2, d3 y d4 es 25,0
43-57
Tema 9. Arrays
Es posible pasar argumentos desde la línea de comandos a una aplicación, para lo cual
se incluye un parámetro de tipo String[ ] (es decir, un array de cadenas) en la lista de
parámetros de main:
Por convención, a este parámetro se le llama args. Cuando se ejecuta una aplicación
usando el comando java, Java pasa los argumentos de línea de comandos que aparecen
después del nombre de la clase.
Por ejemplo, el comando "java miClase a b" pasa dos argumentos de línea de
comandos, a y b, a la aplicación miClase. Los argumentos de la línea de comandos se
separan por espacio en blanco, no por comas. Cuando se ejecuta este comando, el
método main de MiClase recibe los argumentos en los parametros :
Ejemplo 24. Utiliza un argumento de linea de comando para dimensionar un array llamado
numero de tipo entero. El array numero es una variable local del método main.
Copia y Ejecuta:
44-57
Tema 9. Arrays
Ejemplo 26. Escribe una aplicación que utilice 3 argumentos de línea de comando para
definir e inicializar un array llamado pepe de tipo entero.
El valor del primer elemento del array lo determina el segundo argumento de línea de
comando.
El valor del segundo elemento del array es igual al valor del primer elemento más un
incremento que lo determina el tercer argumento de línea de comandos.
El valor del tercer elemento del array y sucesivos, si los hubiera, lo determina el valor del
anterior elemento más el citado incremento.
Argumentos:
Ejemplo 27. Desarrollar una aplicación que ordene y muestre por pantalla una serie de
números introducidos como argumentos de programa. La aplicación tiene que mostrar la
entrada sin ordenar y ordenada.
45-57
Tema 9. Arrays
Ejercicios
1. Letra DNI.
Realiza un programa que reciba por la entrada estándar un número de DNI y devuelva por
la salida estándar la letra del DNI.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
12345678
46-57
Tema 9. Arrays
https://es.wikipedia.org/wiki/Tres_en_l%C3%ADnea
Realiza una clase que ejecute el juego de las tres en raya entre dos jugadores: X y O,
que marcan los espacios de un tablero de 3×3 alternadamente. Un jugador gana si
consigue tener una línea de tres de sus símbolos: la línea puede ser horizontal, vertical o
diagonal.
Debe imprimir el array al comienzo del juego, el tablero se rellena con el carácter '-'.
X - -
- - -
- - -
Y solicita al jugador de '0' una posición donde colocar su primera ficha e imprime el
resultado de la tirada:
El programa debe realizar como máximo nueve tiradas, comprobar después de la tirada
(la quinta) si se ha producido las tres en raya y mostrar el ganador o el resultado de
empate según proceda. Ver los siguientes ejemplos:
47-57
Tema 9. Arrays
X - -
- X -
0 0 X
Gana: X
X X 0
0 0 X
X 0 X
No hay ganadores
El programa deberá asegurar que el usuario no introduce una posición del tablero invalida
(fuera de índice) y que la posición se encuentra libre ('-').
* Un programa correcto no tiene porque tener los métodos descritos obligatoriamente, crea tu
propia solución al algoritmo que se plantea en el enunciado y utiliza después los métodos descritos
como orientación.
48-57
Tema 9. Arrays
Parameters:
tablero – Array de juego 3X3.
Parameters:
tablero- Array de juego 3X3.
turno- Caracter X ó 0 (juega X ó juega 0)
x- Fila
y- Columna
Parameters:
tablero- Array de juego 3X3.
turno- Caracter X ó 0 (juega X ó juega 0)
x- Fila
Parameters:
tablero- Array de juego 3X3.
turno- Caracter X ó 0 (juega X ó juega 0)
y- Columna
Parameters:
tablero- Array de juego 3X3.
turno- Caracter X ó 0 (juega X ó juega 0)
x- Fila
y- Columna
49-57
Tema 9. Arrays
50-57
Tema 9. Arrays
https://www.youtube.com/watch?v=b3J7sfdlnpk
https://www.youtube.com/watch?v=1rquQwfUvHc
Debemos documentar siempre las clases, los constructores, los métodos y los
atributos, también se pueden documentar bucles y partes de algoritmos que se estimen
oportuno.
Java proporciona una herramienta de documentación: Javadoc, que permite a partir del
código fuente generar la documentación en formato HTML. La documentación así
generada se conoce como API (interfaz de programación de la aplicación) o biblioteca de
la aplicación.
Los comentarios de Javadoc tienen una marca de comienzo (/**) y una marca de fin (*/).
Los comentarios de linea o de bloque no son comentarios Javadoc.
Un comentarios de Javadoc tiene dos partes: una para realizar una descripción y otra en
la que encontraremos etiquetas de documentación. Formato general:
/**
* Descripción principal (texto/HTML)
*
* Etiquetas de documentación (texto/HTML)
*/
51-57
Tema 9. Arrays
return tresEnRaya;
}
Etiqueta. Descripción
@autor En clases e interfaces. Se pueden poner varios.
@version En clases e interfaces.
@param En métodos y constructores. Se colocarán tantos como parámetros tenga el constructor o método. Mejor
en el mismo orden en el que se encuentren declarados.
@return Informa de lo que devuelve el método, no se puede usar en constructores o métodos "void"
@throws Excepción lanzada por el método
@deprecated Indica que el método o clase es antigua y que no se recomienda su uso porque posiblemente
desaparecerá en versiones posteriores.
52-57
Tema 9. Arrays
Arrays.sort(array)
import java.util.Arrays;
Ejemplo:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
//Array de tipo String
String[] nombres = {"juan", "pedro", "ana", "maria", "felipe", "luis", "eduardo"};
//Ordena el array
Arrays.sort(nombres);
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
//Array de String
int[] numeros = {4, 2, 6, -3, 10, 11, 166, 1};
//Ordena el array
Arrays.sort(numeros);
53-57
Tema 9. Arrays
También tenemos la opción de ordenar solo una parte del array, indicando la posición del
elemento inicial y la del elemento final (que no se incluye en la ordenación).
Arrays.sort(nombres, 1, 4);
El 1 indica la posición del elemento donde comienza la ordenación y el 4 indica la posición del
primer elemento que no entra en la ordenación.
juan
ana
maria
pedro
felipe
luis
eduardo
Arrays.sort ordena de forma ascendente (de menor a mayor). Para ordenar un array de forma
descendente (de mayor a menor) hay que indicarlo utilizando el método reverseOrder() de la
clase Collections.
import java.util.Collections;
Y para ordenar el array nombres de forma descendente debemos pasar al método sort además
de la referencia del array el argumento: Collections.reverseOrder(). Por ejemplo:
Arrays.sort(nombres, Collections.reverseOrder());
También podemos ordenar solo una parte del array en orden inverso. Por ejemplo, para ordenar
solo los elementos 1, 2 y 3 en orden inverso:
juan
pedro
maria
ana
felipe
luis
eduardo
54-57
Tema 9. Arrays
Por ejemplo, para ordenar un array de enteros de forma descendente hay que declararlo de tipo
Integer en lugar de int.
Métodos de Array.sort
sort(byte[] a)
static void
Sorts the specified array into ascending numerical order.
sort(byte[] a, int fromIndex, int toIndex)
static void
Sorts the specified range of the array into ascending order.
sort(char[] a)
static void
Sorts the specified array into ascending numerical order.
sort(char[] a, int fromIndex, int toIndex)
static void
Sorts the specified range of the array into ascending order.
sort(double[] a)
static void
Sorts the specified array into ascending numerical order.
sort(double[] a, int fromIndex, int toIndex)
static void
Sorts the specified range of the array into ascending order.
sort(float[] a)
static void
Sorts the specified array into ascending numerical order.
sort(float[] a, int fromIndex, int toIndex)
static void
Sorts the specified range of the array into ascending order.
sort(int[] a)
static void
Sorts the specified array into ascending numerical order.
sort(int[] a, int fromIndex, int toIndex)
static void
Sorts the specified range of the array into ascending order.
sort(long[] a)
static void
Sorts the specified array into ascending numerical order.
sort(long[] a, int fromIndex, int toIndex)
static void
Sorts the specified range of the array into ascending order.
sort(Object[] a)
static void Sorts the specified array of objects into ascending order, according to the
natural ordering of its elements.
55-57
Tema 9. Arrays
56-57
Tema 9. Arrays
Ejemplo 27Bis. Desarrollar una aplicación que ordene y muestre por pantalla una serie de
números introducidos como argumentos de programa. La aplicación tiene que mostrar la
entrada sin ordenar, ordenada ascendentemente y ordenada descendentemente.
57-57