Olá pessoal, estava dando uma olhada em minhas publicações e percebi que estava faltando explicar sobre matrizes na linguagem Java. Bom vamos lá então.
Dica: Antes de ler sobre Matrizes em Java leia esse post que fala sobre vetores (arrays unidimensionais).
Cotidiano com matriz
Matriz por definição é um array multidimensional, ou seja, um array de várias dimensões. Para aplicações em nível de softwares comerciais dificilmente você irá empregar o uso de mais de duas dimensões em um array. Para declarar um array de 2D (duas dimensões) em Java fazemos:
int[][] array2D = new int[2][2];
Nesse exemplo foi declarado um array de "quadrado" de duas linhas e duas colunas. Um array 2D pode ser de vários tipos: String, float, int, double, porém, ele deve ser heterogêneo não podendo armazenar dados de tipos diferentes. Se o array foi declarado do tipo String então suas linhas e colunas devem armazenar somente valores do tipo String.
A solução para armazenar dados de diferentes tipos em matrizes (arrays multidimensionais) é a criação de outras matrizes e fazer a leitura associadamente. Por exemplo, suponha que você tenha que armazenar o nome, endereço, idade e código de um contato. Sabendo que código e idade são tipos inteiros de dados (int) e que nome e endereço são tipos caracteres de dados (String) como armazenar essas informações? Veja:
String[][] caracteres = new String[4][2];
int[][] inteiros = new int[4][2];
caracteres[0][0] = nome;
caracteres[0][0] = endereco;
inteiros[0][0] = codigo;
inteiros[0][1] = idade
Dessa forma conseguimos guardar dados referentes a um mesmo contato em diferentes matrizes de diferentes tipos de dados. Para acessar todas as informações de um determinado contato basta informamos o mesmo número de linha para as duas matrizes, isso retorna todas as informações referentes ao contato procurado.
Vamos imaginar agora que nossa matriz tenha um número muito grande de elementos e que acessar ela índice por índice seria uma tarefa árdua e muito trabalhosa. Para percorrer uma matriz podemos utilizar a estrutura de repetição for. Veja como fica:
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 2; j++) {
System.out.println(caracteres[i][j]);
System.out.println(inteiros[i][j]);
}
}
Bom tudo o que foi apresentado até agora resolve muito bem o seu problema quando você conhece previamente o tamanho que a matriz tem. Mas e se você não souber o tamanho do matriz?
Quando não sabemos o tamanho da matriz o código fica um pouco mais complexo, mais nada que chega a assustar. Em Java podemos declarar o array sem fornecer um tamanho para ele, veja:
int[][] inteiros;
O que fizemos acima foi dizer a JVM que teremos um Array de duas dimensões, porém, não construímos esse array ainda portanto ele não pode ser utilizado. Agora devemos obter o tamanho que nosso array deve ter para então criarmos e utilizarmos ele. Veja o exemplo:
int r = (int) (Math.random()*100); //gera um número aleatório entre 0 e 99
inteiros = new int[r][r];
Beleza e agora para percorrermos o array devemos utilizar o tamanho armazenado em r, ou podemos utilizar um método para descobrir qual é esse tamanho. Para descobrir quantas linhas e colunas uma array multidimensional tem utilizamos o método length, veja:
inteiros.length; //retonar o número de linhas
inteiros[0].length; //retorna o número de colunas
Agora veja como podemos percorrer a matriz utilizando o método length:
for(int i = 0; i < inteiros.length; i++) {
for(int j = 0; j < inteiros[i].length; j++) {
System.out.println(inteiros[i][j]);
}
}
Lembrando que para exibir somente a linha ou coluna de uma matriz podemos deixar o número fixo no índice e usar o for para percorrer dinamicamente os demais índices do array, veja:
//exibindo todos os elementos da linha 0
for(int coluna = 0; coluna < inteiros[0].length; coluna++) {
System.out.println(inteiros[0][coluna]);
}
//exibindo todos os elementos da coluna 1
for(int linha = 0; linha < inteiros.length; linha++) {
System.out.println(inteiros[linha][1]);
}
Pessoal seguem dois desafios abaixo para tentarem solucionar, tentam solucionar e dúvidas postem comentários. Vou postar o link com a resolução dos exercícios mais tarde. Abraço a todos!
Dica: comentar código é uma boa prática de programação.
- Crie um programa Java que receba duas matrizes como entrada de dimensões N:M (importânte que sejam tamanhos genéricos, usuário deve definir). Ao termino da leitura programa deve calcular a multiplicação entre essas matrizes (produto de matrizes).
- (Desafio) Crie um programa Java que seja capaz de ler informações de N funcionários de uma empresa, o programa deve armazenar: Nome (String), Apelido (String), Idade (int), código (int). Já sabemos que matrizes em Java são homogêneas portanto só conseguem guardar um tipo único de dados. O programa deve exibir os dados dos N funcionários em ordem crescente por idade.
Resolução dos exercícios propostos. http://programando-ads.blogspot.com.br/2013/01/resolucao-dos-exercicios-de-matrizes-em.html
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirFazer um programa de array de duas dimensoes que guarda 20 numeros, e depois de guarder criar codigo que verifca o menor numero e qual eo mais alto.
ResponderExcluir