¿Qué es una matriz en programación?
Una matriz (o array multidimensional) es una estructura de datos que almacena datos en más de una dimensión. La forma más común es en dos dimensiones, lo que equivale a una tabla, con filas y columnas.
Ejemplo: una imagen digital.
- Piensa en una foto de 4×5 píxeles.
- Cada píxel tiene un color representado por un número.
- Entonces necesitas una estructura que tenga 4 filas y 5 columnas para guardar cada color.
En Java, eso se hace con:
int[][] imagen = new int[4][5];
¿Qué significa int[][]
?
Esto es un array bidimensional de enteros. Es como decir:
- Un array (de 4 posiciones)
- Cada posición tiene un sub-array (de 5 enteros)
Visualmente sería algo así:
imagen = [
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
];
¿Cómo inicializar con valores?
Puedes hacerlo directamente:
int[][] matriz = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
¿Cómo se accede o modifica?
Usas dos índices: uno para la fila, otro para la columna:
imagen[0][0] = 255; // Primer píxel, primer valor
¿Cómo recorrer una matriz con bucles?
Ejemplo:
int[][] imagen = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
Visualmente, esto es:
Fila 0 → 1 2 3
Fila 1 → 4 5 6
Fila 2 → 7 8 9
Código para recorrerla:
for (int i = 0; i < imagen.length; i++) {
for (int j = 0; j < imagen[i].length; j++) {
System.out.print(imagen[i][j] + " ");
}
System.out.println();
}
Vamos línea por línea:
for (int i = 0; i < imagen.length; i++)
- Este es el bucle externo.
- Recorre las filas de la matriz.
imagen.length
te da el número de filas (en este caso, 3).i
representa el número de la fila actual.
for (int j = 0; j < imagen[i].length; j++)
- Este es el bucle interno.
- Recorre las columnas de la fila
i
. imagen[i].length
te da el número de columnas de esa fila.j
representa la posición de la columna actual.
System.out.print(imagen[i][j] + " ");
- Muestra el valor de la posición
[i][j]
en pantalla. - Se imprime en la misma línea (
print
no hace salto de línea).
System.out.println();
- Hace un salto de línea después de recorrer cada fila, para que se vea como una tabla o matriz.
¿Qué es una matriz irregular?
Una matriz irregular es cuando las filas no tienen el mismo número de columnas. Esto es útil cuando no todos los datos siguen una estructura fija.
Ejemplo:
int[][] irregular = new int[3][]; // 3 filas, pero columnas no definidas
irregular[0] = new int[2]; // Fila 0 tiene 2 columnas
irregular[1] = new int[5]; // Fila 1 tiene 5 columnas
irregular[2] = new int[3]; // Fila 2 tiene 3 columnas
Actividades de programación
Actividad 1: Crear e imprimir una matriz de enteros
Crear una matriz de 3×3 con números enteros y mostrarla en pantalla.
public class MatrizBasica {
public static void main(String[] args) {
int[][] matriz = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(“Contenido de la matriz:”);
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
System.out.print(matriz[i][j] + ” “);
}
System.out.println(); // Salto de línea al final de cada fila
}
}
}
Actividad 2: Sumar todos los elementos de una matriz
Crear una matriz de 2×3 con valores predefinidos y mostrar la suma total de todos los elementos.
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coastpublic class SumaMatriz {
public static void main(String[] args) {
int[][] numeros = {
{3, 5, 2},
{4, 6, 1}
};
int suma = 0;
for (int i = 0; i < numeros.length; i++) {
for (int j = 0; j < numeros[i].length; j++) {
suma += numeros[i][j];
}
}
System.out.println(“La suma de todos los elementos es: ” + suma);
}
}
Actividad 3: Contar cuántos números pares hay en la matriz
Dada una matriz de enteros, contar cuántos números pares contiene.
public class ContarPares {
public static void main(String[] args) {
int[][] matriz = {
{2, 7, 4},
{9, 6, 8}
};
int contadorPares = 0;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
if (matriz[i][j] % 2 == 0) {
contadorPares++;
}
}
}
System.out.println(“Hay ” + contadorPares + ” números pares en la matriz.”);
}
}
Actividad 4: Rellenar una matriz con números introducidos por el usuario
Pedir al usuario que escriba 6 números y guardarlos en una matriz de 2 filas y 3 columnas. Luego, mostrar la matriz.
import java.util.Scanner;
public class MatrizUsuario {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] datos = new int[2][3];
System.out.println(“Introduce 6 números:”);
for (int i = 0; i < datos.length; i++) {
for (int j = 0; j < datos[i].length; j++) {
System.out.print(“Número para [” + i + “][” + j + “]: “);
datos[i][j] = scanner.nextInt();
}
}
System.out.println(“Matriz introducida:”);
for (int i = 0; i < datos.length; i++) {
for (int j = 0; j < datos[i].length; j++) {
System.out.print(datos[i][j] + ” “);
}
System.out.println();
}
}
}
Actividad 5: Buscar un número en una matriz
Crear una matriz de 3×3 con números. Pedir al usuario un número y mostrar si se encuentra y en qué posición.
import java.util.Scanner;
public class BuscarNumeroMatriz {
public static void main(String[] args) {
int[][] matriz = {
{10, 15, 20},
{25, 30, 35},
{40, 45, 50}
};
Scanner scanner = new Scanner(System.in);
System.out.print(“Introduce un número a buscar: “);
int numBuscado = scanner.nextInt();
boolean encontrado = false;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
if (matriz[i][j] == numBuscado) {
System.out.println(“Número encontrado en posición [” + i + “][” + j + “]”);
encontrado = true;
}
}
}
if (!encontrado) {
System.out.println(“El número no se encuentra en la matriz.”);
}
}
}