Já vimos no capítulo passado de nossa
apostila que um array é um conjunto de variáveis do mesmo tipo.
Porém, poderíamos também declarar um
conjunto de arrays. Nesse caso, teríamos um array multidimensional
ou vetor multidimensional, também conhecido por matrizes.
Matrizes ou Vetores multidimensionais: Conjunto de vetores ou arrays em Java
Imagine a situação que vinhamos
usando como em exemplo em nossa apostila online Java Progressivo, o
exemplo dos dados dos alunos de uma escola.
Ora, um aluno faz várias provas todos
os anos.
Vamos supor que ele faz 10 provas por
ano. Como você já é um sábio programador Java, não vai declarar
10 floats para armazenar as 10 notas. Vai declarar um array de 10
elementos floats.
Porém, existem várias matérias no
colégio: Matemáticas, Física, Química, Biologia etc.
Vamos supor que existam 10.
E aí, vai declarar 10 vetores/arrays
?
Claro que não, isso seria muito
cansativo.
Declare um array de arrays.
Arrays de uma ou mais dimensões em Java
Nos exemplos passados, declaramos
apenas um bloco de variáveis. Dizemos que esse vetor é
unidimensional, pois é somente um bloco.
Veja tal array/vetor apenas como uma
linha, assim terá a noção de dimensão.
Por exemplo, vamos declarar um array
unidimensional com 5 notas de Matemática:
int[] notas = {8.0 , 7.5, 8.5 , 9.0 ,
8.0};
Essa nota pode ser representada por uma
matriz 1x5, ou seja, uma linha e 5 colunas:
8.0 | 7.5 | 8.5 | 9.0 | 8.0 |
Agora vamos representar as notas em
Física, abaixo das de Matemática. Teremos uma matriz 2x5, ou seja,
uma matriz de duas linhas e 5 colunas:
8.0 | 7.5 | 8.5 | 9.0 | 8.0 |
8.9 | 9.0 | 8.6 | 8.4 | 8.0 |
Agora vamos representar as notas de
Química, abaixo das notas de Física.
Teremos uma matriz 3x5, ou seja, uma
matriz de três linhas e 5 colunas:
8.0 | 7.5 | 8.5 | 9.0 | 8.0 |
8.9 | 9.0 | 8.6 | 8.4 | 8.0 |
6.8 | 7.1 | 7.0 | 7.6 | 6.5 |
Matrizes: declarando vetores/arrays multidimensionais em Java
A sintaxe é exatamente a mesma do array normal, a diferença está no número de colchetes '[]' que irmos usar.
No caso, usamos um par para cada
dimensão.
Por exemplo, para declarar a matriz 2x5
do exemplo anterior:
float[][] notas = new float[2][5];
Ou
float[][] notas = { {8.0, 7.5, 8.5,
9.0, 8.0
}, {8.9, 9.0, 8.6, 8.4, 8.0
} };
Para declarar a matriz 3x5 do exemplo
anterior:
float[][] notas = new float[3][5];
Ou
float[][] notas = { {8.0, 7.5, 8.5,
9.0, 8.0
}, {8.9, 9.0, 8.6, 8.4, 8.0
}, {6.8, 7.1, 7.0, 7.6, 6.5
} };
Note que notas[0] se refere ao array de
notas de Matemática.
Note que notas[1] se refere ao array de
notas de Física.
Note que notas[2] se refere ao array de
notas de Química.
Por exemplo: qual foi a quarta nota de
Física do aluno?
Ora, o vetor de Física é notas[1], e
a quarta nota é o elemento [3] desse array.
Então a quarta nota de Física do
aluno está armazenada em: nota[1][3], que é 8.4
Exemplos de códigos:
Como de costume, em nossa apostila do
curso Java Progressivo, vamos apresentar dois exemplos de como usar
os arrays dimensionais, ou matrizes, em Java.
Exemplo 1: Crie um aplicativo em Java
que peça ao usuário para preencher uma matriz 3x3 com valores
inteiros e depois exiba essa matriz.
A grande novidade, e importância,
nesse tipo de aplicativo são os laços for aninhados, ou seja, um
dentro do outro.
Primeiro criamos um laço que vai
percorrer todas as linhas da matriz. Podemos, e devemos, ver cada
linha como um vetor de 3 elementos.
Dentro de cada linha, temos que
percorrer cada elemento do array e fornecer seu valor. Fazemos isso
através de outro laço for, que ficará responsável pelas
'colunas', formando nossos laços aninhados.
Para imprimir, o esquema é exatamente
o mesmo. Imprimimos linha por linha, e em cada linha, imprimimos
coluna por coluna.
import java.util.Scanner;
public class matrizTeste {
public static void main(String[] args){
int[][] matriz = new int[3][3];
Scanner entrada = new Scanner(System.in);
System.out.println("Matriz M[3][3]\n");
for(int linha=0 ; linha < 3 ; linha++){
for(int coluna = 0; coluna < 3 ; coluna ++){
System.out.printf("Insira o elemento M[%d][%d]: ",linha+1,coluna+1);
matriz[linha][coluna]=entrada.nextInt();
}
}
System.out.println("\nA Matriz ficou: \n");
for(int linha=0 ; linha < 3 ; linha++){
for(int coluna = 0; coluna < 3 ; coluna ++){
System.out.printf("\t %d \t",matriz[linha][coluna]);
}
System.out.println();
}
}
}
Exemplo 2: Crie um aplicativo em Java que peça ao usuário para preencher
uma matriz 3x2 com valores inteiros e depois exiba essa matriz.
No
exemplo passado, o número de linhas era igual ao número de colunas,
da matriz. Vamos usar um exemplo diferente, para você fixar seu
conhecimento em arrays multidimensionais.
Como
dito no começo, uma matriz, array multidimensional ou vetor
multidimensional nada mais é que um conjunto de arrays ou conjunto
de vetores, array de arrays.
Quando
fazemos: int[5] para declarar um array de inteiros, estamos
declarando 5 variáveis do tipo inteiro.
Quando
fazemos: int[10][5], estamos declarando 10 arrays, e em cada array desses existem 5 inteiros. Ou seja, 10 arrays do tipo do exemplo passado.
Logo, o tamanho desse array – length – é 10.
Você pode obter isso com o comando: array.length
Você pode obter isso com o comando: array.length
Assim,
uma matriz 3x2 tem tamanho 3.
Uma
4x3 tem tamanho 4, uma 10x123123 tem tamanho 10 etc.
Ou
seja, o length
de arrays multidimensionais
é o número de linhas.
Vamos
usar esse fato nos laços:
import java.util.Scanner;
public class matrizTeste2 {
public static void main(String[] args){
int[][] matriz = new int[3][2];
Scanner entrada = new Scanner(System.in);
System.out.println("Matriz M[3][2]\n");
for(int linha=0 ; linha < 3 ; linha++){
for(int coluna = 0; coluna < 2 ; coluna ++){
System.out.printf("Insira o elemento M[%d][%d]: ",linha+1,coluna+1);
matriz[linha][coluna]=entrada.nextInt();
}
}
System.out.println("\nA Matriz ficou: \n");
for(int linha=0 ; linha < 3 ; linha++){
for(int coluna = 0; coluna < 2 ; coluna ++){
System.out.printf("\t %d \t",matriz[linha][coluna]);
}
System.out.println();
}
}
}
Nenhum comentário:
Postar um comentário