05 - Matrices
Aprende cómo almacenar y gestionar varios datos usando matrices.
Las matrices te permiten almacenar múltiples valores del mismo tipo en una sola variable. Piensa la matriz como una fila de casillas, cada una conteniendo un elemento.
Crear matrices
1° Método: Declarar e Iniciar por separado
int[] numbers; // Declarar
numbers = new int[5]; // Crear una matriz con 5 espacios2° Método: Todo a la vez
int[] numbers = new int[5];3° Método: Con valores iniciales
int[] numbers = {10, 20, 30, 40, 50};Una vez hayas creado una matriz, su tamaño es fijado Una vez hayas creado una matriz, su tamaño es fijado ¡No puedes añadir o eliminar elementos más tarde!
int[] inventory = new int[9]; // Siempre tendrá 9 espaciosAcceder a los elementos de la matriz
Las matrices usan números indexados iniciando desde 0:
String[] players = {"Alicia", "Bob", "Carlos"};
System.out.println(players[0]); // "Alicia"
System.out.println(players[1]); // "Bob"
System.out.println(players[2]); // "Carlos"Representación visual
| Índice | 0 | 1 | 2 |
|---|---|---|---|
| Valor | "Alicia" | "Bob" | "Carlos" |
Modificar valores de matriz
int[] health = {100, 80, 90};
health[1] = 60; // Cambiar la vida de Bob a 60
System.out.println(health[0]); // Valor de 100
System.out.println(health[1]); // Valor de 60
System.out.println(health[2]); // Valor de 90Longitud de la matriz
Usa ".length" para obtener el tamaño de una matriz:
int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // Valor de 5!Ten en cuenta que no hay paréntesis! Es "nombredematriz.length", pero no "nombredematriz.length()"
Hacer loop en la matriz
Usar el loop "for"
String[] items = {"Espada", "Escudo", "Pocion"};
for (int i = 0; i < items.length; i++) {
System.out.println(items[i]);
}Usar loop "for" mejorado (también conocido como "for-each")
String[] items = {"Espada", "Escudo", "Pocion"};
for (String item : items) {
System.out.println(item);
}El loop "for" mejorado es más simple y seguro, pero no podrás modificar la matriz o saber el índice actual.
// Cuando necesites el índice:
for (int i = 0; i < items.length; i++) {
System.out.println(i + ": " + items[i]);
}
// Cuando solo necesites los valores:
for (String item : items) {
System.out.println(item);
}Matrices multidimensionales
Las matrices pueden contener otras matrices, creando una red de matrices.
int[][] grid = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(grid[0][0]); // Valor de 1
System.out.println(grid[1][2]); // Valor de 6
System.out.println(grid[2][1]); // Valor de 8Representación visual
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1 | 2 | 3 |
| 1 | 4 | 5 | 6 |
| 2 | 7 | 8 | 9 |
Hacer loop en matrices de dos dimensiones (2D)
int[][] grid = {
{1, 2, 3},
{4, 5, 6}
};
for (int row = 0; row < grid.length; row++) {
for (int col = 0; col < grid[row].length; col++) {
System.out.print(grid[row][col] + " ");
}
System.out.println();
}Ejemplos prácticos
Sistema de inventario del jugador
String[] inventory = new String[9]; // 9 espacios de hotbar (barra inferior)
// Añadir items
inventory[0] = "Espada de diamante";
inventory[1] = "Escudo";
inventory[8] = "Comida";
// Mostrar inventario
for (int i = 0; i < inventory.length; i++) {
if (inventory[i] != null) {
System.out.println("Espacio " + i + ": " + inventory[i]);
} else {
System.out.println("Espacio " + i + ": Vacío");
}
}Encontrar la mayor puntuación
int[] scores = {45, 92, 67, 88, 55, 71};
int highest = scores[0];
for (int i = 1; i < scores.length; i++) {
if (scores[i] > highest) {
highest = scores[i];
}
}
System.out.println("Mayor puntuación: " + highest);Calcular el promedio
double[] temperatures = {23.5, 25.0, 22.8, 24.3, 26.1};
double sum = 0;
for (double temp : temperatures) {
sum += temp;
}
double average = sum / temperatures.length;
System.out.println("La temperatura media es: " + average);Red de bloques (matriz bidimensional 2D)
String[][] terrain = new String[5][5];
// Llenar con hierba
for (int x = 0; x < 5; x++) {
for (int z = 0; z < 5; z++) {
terrain[x][z] = "grass";
}
}
// Coloca una piedra
terrain[2][2] = "piedra";
terrain[1][3] = "piedra";
// Mostrar cuadrícula
for (int x = 0; x < terrain. ength; x++) {
for (int z = 0; z < terrain[x]. ength; z++) {
System.out. rint(terrain[x][z] + " ");
}
System.out.println();
}Operaciones comunes en una matriz
Copiar una matriz
Buscar un valor
String[] items = {"Espada", "Escudo", "Poción", "Arco"};
String target = "Poción";
int foundIndex = -1;
for (int i = 0; i < items.length; i++) {
if (items[i].equals(target)) {
foundIndex = i;
break;
}
}
if (foundIndex != -1) {
System.out.println("Encontrado en: " + foundIndex);
} else {
System.out.println("No se pudo encontrar");
}Contar ocurrencias
String[] blocks = {"piedra", "tierra", "piedra", "pasto", "piedra"};
String searchFor = "piedra";
int count = 0;
for (String block : blocks) {
if (block.equals(searchFor)) {
count++;
}
}
System.out.println(searchFor + " aparece " + count + " veces");Limites de una matriz
Las matrices no pueden aumentar o reducir su tamaño Si necesitas flexibilidad, aprenderás sobre listas de matrices después.
int[] numbers = new int[5];
// No puedes añadir un sexto valor
// si necesitas mas espacio, crea una nueva matriz
int[] bigger = new int[10];
for (int i = 0; i < numbers.length; i++) {
bigger[i] = numbers[i];
}