Cinco partidos, cinco variables
Tu equipo ha jugado cinco partidos. Quieres guardar los goles de cada uno.
Con lo que sabes, crearías cinco variables. ¿Y si fueran treinta partidos? Sería una pesadilla.
Java tiene algo mejor: una fila de cajas, todas juntas, con un solo nombre. Se llama array.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Array | Una fila de cajas del mismo tipo con un solo nombre. | int[] goals |
| Elemento | Cada caja del array y el valor que guarda. | el 3 de la tercera caja |
| Índice | El número de posición de una caja. Empieza en 0. | goals[0] |
| length | Cuántas cajas tiene el array. | goals.length |
| Recorrer | Pasar por todas las cajas con un bucle. | for (int i = 0; ...) |
| Corchetes | Las marcas [ y ]. Sirven para elegir una caja. | goals[2] |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Crear un array
Escribes el tipo, seguido de corchetes, y después el nombre. Los valores van entre llaves.
int[] goals = {2, 0, 3, 1, 4}; crea cinco cajas con números enteros.
Para leer una caja escribes el nombre y su posición entre corchetes: goals[2].
Pruébalo: los goles de la liga
public class Main {
public static void main(String[] args) {
int[] goals = {2, 0, 3, 1, 4};
System.out.println("La primera caja vale " + goals[0]);
System.out.println("La tercera caja vale " + goals[2]);
System.out.println("Hay " + goals.length + " partidos.");
// Escribe la última caja: goals[4].
}
}
El índice empieza en 0
Esto sorprende a todo el mundo. La primera caja es la 0, no la 1.
Piensa en un ascensor: la planta de la calle es la 0. La segunda planta es la 1.
En un array de 5 cajas, los índices son 0, 1, 2, 3 y 4. El último es siempre length - 1.
Ejemplo resuelto: el array de goles
| Índice | Cómo se escribe | Valor | Partido |
|---|---|---|---|
| 0 | goals[0] | 2 | El primero |
| 1 | goals[1] | 0 | El segundo |
| 2 | goals[2] | 3 | El tercero |
| 3 | goals[3] | 1 | El cuarto |
| 4 | goals[4] | 4 | El quinto |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cambiar una caja
Una caja se cambia como una variable. Escribes su posición, un igual y el valor nuevo.
goals[1] = 5; mete un 5 en la segunda caja. Las demás no cambian.
Pruébalo: corregir un resultado
public class Main {
public static void main(String[] args) {
int[] goals = {2, 0, 3, 1, 4};
// Corregimos el resultado: en el segundo partido hubo 3 goles, no 0.
goals[1] = 3;
System.out.println("Ahora la segunda caja vale " + goals[1]);
// La tercera caja sube un gol.
goals[2] = goals[2] + 1;
System.out.println("Ahora la tercera caja vale " + goals[2]);
}
}
No te pases del final
Advertencia
Con 5 cajas, goals[5] no existe. Java para el programa con el error ArrayIndexOutOfBoundsException. Significa: índice fuera de los límites. Revisa que el último índice sea length - 1.
Recorrer el array con un for
Escribir goals[0], goals[1], goals[2]... a mano es lento. Un for lo hace por ti.
La variable i toma los valores 0, 1, 2, 3 y 4. Usas i < goals.length, con menor que y no con menor o igual. Si usas <=, la última vuelta se pasa del final.
Pruébalo: todos los partidos
public class Main {
public static void main(String[] args) {
int[] goals = {2, 0, 3, 1, 4};
for (int i = 0; i < goals.length; i++) {
// Sumamos 1 a i para decir "partido 1" y no "partido 0".
System.out.println("Partido " + (i + 1) + ", goles: " + goals[i]);
}
// Añade un sexto partido a la lista y ejecuta otra vez.
}
}
Arrays de texto y arrays vacíos
Un array puede guardar cualquier tipo. Para días de la semana usas String[].
Si aún no sabes los valores, creas el array vacío: new int[3] da tres cajas con un 0 dentro. Después las rellenas.
Pruébalo: la semana y una lista vacía
public class Main {
public static void main(String[] args) {
String[] days = {"lunes", "martes", "miércoles", "jueves", "viernes"};
System.out.println("El tercer día es " + days[2]);
// Tres cajas vacías, que valen 0.
int[] euros = new int[3];
euros[0] = 5;
euros[1] = 8;
for (int i = 0; i < euros.length; i++) {
System.out.println("Caja " + i + ": " + euros[i]);
}
}
}