0% encontró este documento útil (0 votos)
25 vistas

Matrices en Java

El documento describe matrices en Java. Explica que una matriz es un array bidimensional que requiere dos índices (fila y columna) para acceder a sus elementos. Detalla cómo crear, inicializar y recorrer matrices regulares e irregulares en Java, incluyendo ejemplos de código. También cubre temas como representar matrices en memoria y acceder a sus elementos utilizando los índices fila y columna.

Cargado por

Alberto Ayala
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas

Matrices en Java

El documento describe matrices en Java. Explica que una matriz es un array bidimensional que requiere dos índices (fila y columna) para acceder a sus elementos. Detalla cómo crear, inicializar y recorrer matrices regulares e irregulares en Java, incluyendo ejemplos de código. También cubre temas como representar matrices en memoria y acceder a sus elementos utilizando los índices fila y columna.

Cargado por

Alberto Ayala
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

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:

M es el nombre del array.


M contiene la dirección de memoria (referencia) de un array unidimensional de 3 elementos.
Cada elemento de este array unidimensional contiene la dirección de memoria de otro array
unidimensional.
Cada uno de estos últimos arrays unidimensionales contiene los valores de cada fila de la
matriz.
M.length indica el número de filas de la matriz. En este ejemplo el número de filas
(M.length) es 3.
M[i].length indica el nímero de columnas de la fila i. En este ejemplo la longitud de cada fila
del array (M[i].length) es 5.
Para acceder a cada elemento de la matriz se utilizan dos índices. El primero indica la fila y
el segundo la columna.
M[0][2] = 9; //asigna el valor 9 al elemento situado en la primera fila (fila 0) y tercera
columna (fila 2).
No dedemos olvidar que la primera fila de una matriz es la fila 0 y la primera columna de
una matriz es la columna 0.
CREAR MATRICES EN JAVA
Se crean de forma similar a los arrays unidimensionales, añadiendo un índice.
Por ejemplo:
matriz de datos de tipo int llamado ventas de 4 filas y 6 columnas:
int [][] ventas = new int[4][6];
matriz de datos double llamado temperaturas de 3 filas y 4 columnas:
double [][] temperaturas = new double[3][4];
En Java se pueden crear arrays irregulares en los que el número de elementos de cada
fila es variable. Solo es obligatorio indicar el número de filas.
Por ejemplo:
int [][] m = new int[3][];
crea una matriz m de 3 filas.
A cada fila se le puede asignar un número distinto de columnas:
m[0] = new int[3];
m[1] = new int[5];
m[2] = new int[2];
Gráficamente podemos representar la disposición real en memoria del array anterior así:

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;

public class Bidimensional2 {

public static void main(String[] args) {

final int FILAS = 5, COLUMNAS = 4;


Scanner sc = new Scanner(System.in);
int i, j, mayor, menor;
int filaMayor, filaMenor, colMayor, colMenor;

int[][] A = new int[FILAS][COLUMNAS]; //Se crea una matriz de 5 filas


y 4 columnas

//Se introducen por teclado los valores de la matriz


System.out.println("Lectura de elementos de la matriz: ");
for (i = 0; i < FILAS; i++) {
for (j = 0; j < COLUMNAS; j++) {
System.out.print("A[" + i + "][" + j + "]= ");
A[i][j] = sc.nextInt();
}
}

//Mostrar por pantalla los valores que contiene la matriz


System.out.println("valores introducidos:");
for (i = 0; i < A.length; i++) {
for (j = 0; j < A[i].length; j++) {
System.out.print(A[i][j] + " ");
}
System.out.println();
}

//Calcular el mayor valor de la matriz y el menor.


//Obtener las posiciones que ocupan el mayor y el menor dentro de la
matriz
mayor = menor = A[0][0]; //se toma el primer elemento de la matriz
como mayor y menor
filaMayor = filaMenor = colMayor = colMenor = 0;

//mediante dos bucles for anidados recorremos la matriz


//buscamos el mayor, el menor y sus posiciones
for (i = 0; i < A.length; i++) { //para cada fila de la matriz
for (j = 0; j < A[i].length; j++) { //para cada columna de la
matriz
if (A[i][j] > mayor) {
mayor = A[i][j];
filaMayor = i;
colMayor = j;
} else if (A[i][j] < menor) {
menor = A[i][j];
filaMenor = i;
colMenor = j;
}
}
}

//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);
}
}
Ejemplo de recorrido de una matriz irregular en Java:
Programa que crea una matriz irregular de enteros. El número de filas se pide por teclado.
Para cada fila se pedirá el número de columnas que tiene. El número mínimo de filas debe
ser 2 y el número mínimo de columnas debe ser 1. A continuación asigna a cada elemento
de la matriz un número aleatorio del 1 al 5. Finalmente muestra por pantalla el contenido de
la matriz.

import java.util.Random;
import java.util.Scanner;

public class MatrizIrregular {

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
Random rnd = new Random();
int filas, columnas;

do { //lectura de las filas


System.out.print("Introduce número de filas: ");
filas = sc.nextInt();
if (filas < 2) {
System.out.println("Valor no válido");
}
} while (filas < 2);

//se crea el array solo con el número de filas


//el número de columnas se deja vacío
//el número de columnas para cada fila lo indicaremos después
int[][] A = new int[filas][];

//para cada fila pedimos el número de columnas que tendrá


for (int i = 0; i < A.length; i++) {
do {
System.out.print("Número de columnas para la fila " + i + ":
");
columnas = sc.nextInt();
if (columnas < 1) {
System.out.println("Valor no válido");
}
} while (columnas < 1);
//Se crea un array del tamaño indicado y se le asigna a la fila
A[i] = new int[columnas];
}
//A cada elemento de la matriz se le asigna un valor aleatorio del 1
al 5
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A[i].length; j++) {
A[i][j] = rnd.nextInt(5) + 1;
}
}

//Se muestra el contenido de la matriz


System.out.println("Contenido del array:");
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A[i].length; j++) {
System.out.print(A[i][j] + " ");
}
System.out.println();
}
}
}

import java.util.*;

public class Matriz {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

//pido tamaño de la matriz

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();
}

public class CALSESTRINGXD {

/*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++) {

for (int j = 0; i < datos[i].length; j++) {

System.out.println("ingrese el precio del producto " + Articulos[j]);


precio[j] = x.nextDouble();

System.out.println("ingrese la cantidad vendidad por cada vendedor : " + Articulos[i]);


datos[i][j] = x.nextDouble();
acumulador[i] += precio[i] * datos[i][j];
mas_vendido[i]+=datos[i][j];

}
}
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;

public class Bidimensional2 {

public static void main(String[] args) {

final int FILAS = 5, COLUMNAS = 4;


Scanner sc = new Scanner(System.in);
int i, j, mayor, menor;
int filaMayor, filaMenor, colMayor, colMenor;

int[][] A = new int[FILAS][COLUMNAS]; //Se crea una matriz de 5 filas y 4 columnas

//Se introducen por teclado los valores de la matriz


System.out.println("Lectura de elementos de la matriz: ");
for (i = 0; i < FILAS; i++) {
for (j = 0; j < COLUMNAS; j++) {
System.out.print("A[" + i + "][" + j + "]= ");
A[i][j] = sc.nextInt();
}
}

//Mostrar por pantalla los valores que contiene la matriz


System.out.println("valores introducidos:");
for (i = 0; i < A.length; i++) {
for (j = 0; j < A[i].length; j++) {
System.out.print(A[i][j] + " ");
}
System.out.println();
}

//Calcular el mayor valor de la matriz y el menor.


//Obtener las posiciones que ocupan el mayor y el menor dentro de la matriz
mayor = menor = A[0][0]; //se toma el primer elemento de la matriz como mayor y menor
filaMayor = filaMenor = colMayor = colMenor = 0;

//mediante dos bucles for anidados recorremos la matriz


//buscamos el mayor, el menor y sus posiciones
for (i = 0; i < A.length; i++) { //para cada fila de la matriz
for (j = 0; j < A[i].length; j++) { //para cada columna de la matriz
if (A[i][j] > mayor) {
mayor = A[i][j];
filaMayor = i;
colMayor = j;
} else if (A[i][j] < menor) {
menor = A[i][j];
filaMenor = i;
colMenor = j;
}
}
}

//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);
}
}

También podría gustarte