Matrices en Java
Matrices en Java
Actualizado 2022
Un array en Java puede tener más de una dimensión. El caso más general son los arrays
bidimensionales también llamados matrices o tablas.
La dimensión de un array la determina el número de índices necesarios para acceder a sus
elementos.
Los vectores que hemos visto en otra entrada anterior son arrays unidimensionales porque
solo utilizan un índice para acceder a cada elemento.
Una matriz necesita dos índices para acceder a sus elementos. Gráficamente podemos
representar una matriz como una tabla de n filas y m columnas cuyos elementos son todos
del mismo tipo.
La siguiente figura representa un array M de 3 filas y 5 columnas:
A los elementos del array se accede mediante la fila y columna donde están situados.
A efectos prácticos, cuando trabajamos con arrays bidimensionales podemos pensar en una
tabla como la que se muestra en la imagen anterior donde los elementos están distribuidos
en filas y columnas.
Pero en realidad una matriz en Java es un array de arrays.
La disposición real en memoria del array anterior la podemos representar gráficamente de
esta forma:
INICIALIZAR MATRICES
Un array es un objeto, por lo tanto, cuando se crea, a sus elementos se les asigna
automáticamente un valor inicial:
0 para arrays numéricos
'\u0000' (carácter nulo) para arrays de caracteres
false para arrays booleanos
null para arrays de String y de referencias a objetos
También podemos dar otros valores iniciales al array cuando se crea.
Los valores iniciales se escriben entre llaves separados por comas.
Los valores que se le asignen a cada fila aparecerán a su vez entre llaves separados por
comas.
El número de valores determina el tamaño de la matriz.
Por ejemplo:
int [][] numeros = {{6,7,5},{3, 8, 4}, {1,0,2}, {9,5,2}};
se crea la matriz numeros de tipo int, de 4 filas y 3 columnas, y se le asignan esos valores
iniciales.
Asignando valores iniciales se pueden crear también matrices irregulares.
Por ejemplo la instrucción:
int [][] a = {{6,7,5,0,4}, {3, 8, 4}, {1,0,2,7}, {9,5}};
crea una matriz irregular de 4 filas. La primera de 5 columnas, la segunda de 3, la tercera
de 4 y la cuarta de 2.
RECORRER MATRICES
Para recorrer una matriz se anidan dos bucles for. En general para recorrer un array
multidimensional se anidan tantas instrucciones for como dimensiones tenga el array.
Ejemplo de recorrido de una matriz en Java:
Programa que lee por teclado números enteros y los guarda en una matriz de 5 filas y 4
columnas. A continuación muestra los valores leídos, el mayor y el menor y las posiciones
que ocupan.
import java.util.Scanner;
import java.util.Random;
import java.util.Scanner;
import java.util.*;
System.out.print("«columnas: ");
int n= sc.nextInt();
System.out.print("filas:");
int m= sc.nextInt();
int [][] matriz = new int [n][m]; //en esta parte ya quedara dimensionada la matriz con el valor que le
ingreses en filas y columnas.
para recorrer e imprimir por columnas solo tienes que cambiar el orden de los for:
for (j = 0; j < COLUMNAS; j++) {
for (i = 0; i < FILAS; i++) {
System.out.print(A[i][j] + " ");
}
System.out.println();
}
/*Una empresa de ventas a domicilio maneja 10 artículos diferentes y cuenta con 25 vendedores.
En un arreglo de 25x10 se tienen almacenadas las cantidades de cada artículo vendidas por cada
vendedor.
Además, los precios de cada artículo están almacenados en un vector de tamaño 10.
Se desea elaborar un algoritmo para imprimir lo siguiente:
a) La cantidad de dinero recopilado por cada vendedor.
b) El número del vendedor que recopiló la mayor cantidad de dinero.
c) El número del artículo más vendido (entre todos los vendedores).
d) El total de vendedores que no vendieron ningún artículo número ocho. e)
Realizar un procedimiento de carga inicial para los datos en dicho arreglo.
f) Realizar un entorno gráfico adecuado al usuario.*/
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
String Articulos[] = {"toalla", "freazada", "tijeras", "almohadas", "licuadoras", "refrigeradoras",
"estractorar", "platano", "mandaria", "naranjas"};
double datos[][] = new double[5][10];
double precio[] = new double[10];
double acumulador[] = new double[5];
double mayor_acu = 0;
double mas_vendido[] = new double[10];
double no_venta = 0;
for (int i = 0; i < datos.length; i++) {
}
}
double mayor =acumulador[0];
double mayor_vendido=mas_vendido[0];
for (int i = 1; i < datos.length; i++) {
if(acumulador[i]>mayor){
mayor=acumulador[i];
}
if(mas_vendido[i]>mayor_vendido){
mayor_vendido=mas_vendido[i];
}
}
for (int j = 0; j < datos.length; j++) {
for (int k = 0; k < datos[j].length; k++) {
if(datos[j][7]==0){
System.out.println("El Vendedor N°"+j+"no vendio ningun articulo"+datos[j][7]);
no_venta++;
}
}
}
for (int i = 0; i < datos.length; i++) {
System.out.println(" la cantidad de dinero recopilada cada vendedor"+acumulador[i]);
}
System.out.println("el numero del vendedor que recopilo mas dinero es :"+mayor);
System.out.println("el numero del articulo mas vendido "+mayor_vendido);
System.out.println(" el total de vendedores que no vendieron ningun alrticulo del N°"+no_venta);
}
}
import java.util.Scanner;
//Mostrar por pantalla el mayor elemento de la matriz,el menor y las posiciones que ocupan
System.out.print("Elemento mayor: " + mayor);
System.out.println(" Fila: "+ filaMayor + " Columna: " + colMayor);
System.out.print("Elemento menor: " + menor);
System.out.println(" Fila: "+ filaMenor + " Columna: " + colMenor);
}
}