Programação Java: Array Multidimensional ou Matriz: Array de arrays

Linguagem Java , Programação Java, Java Curso gratis.

  • Click here to study this lesson in English

    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 Oracle, 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 1×5, 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 2×5, 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 3×5, 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 2×5 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 3×5 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 Oracle , 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 3×3 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;<br /><br />public class matrizTeste {<br /><br />    public static void main(String[] args){<br />            int[][] matriz = new int[3][3];<br /><br />            Scanner entrada = new Scanner(System.in);<br />            System.out.println("Matriz M[3][3]\n");<br /><br />            for(int linha=0 ; linha                 for(int coluna = 0; coluna                     System.out.printf("Insira o elemento M[%d][%d]: ",linha+1,coluna+1);<br />                    matriz[linha][coluna]=entrada.nextInt();<br />                }<br />            }<br /><br />            System.out.println("\nA Matriz ficou: \n");<br />            for(int linha=0 ; linha                 for(int coluna = 0; coluna                     System.out.printf("\t %d \t",matriz[linha][coluna]);<br />                }<br />                System.out.println();<br />            }<br /><br />        }<br /><br /><br />}<br />

Exemplo 2: Crie um aplicativo em Java que peça ao usuário para preencher uma matriz 3×2 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


Assim, uma matriz 3×2 tem tamanho 3.

Uma 4×3 tem tamanho 4, uma 10×123123 tem tamanho 10 etc.

Ou seja, o lengthde arrays multidimensionaisé o número de linhas.


Vamos usar esse fato nos laços:

import java.util.Scanner;<br /><br />public class matrizTeste2 {<br /><br />    public static void main(String[] args){<br />        int[][] matriz = new int[3][2];<br /><br />        Scanner entrada = new Scanner(System.in);<br />        System.out.println("Matriz M[3][2]\n");<br /><br />        for(int linha=0 ; linha             for(int coluna = 0; coluna                 System.out.printf("Insira o elemento M[%d][%d]: ",linha+1,coluna+1);<br />                matriz[linha][coluna]=entrada.nextInt();<br />            }<br />        }<br /><br />        System.out.println("\nA Matriz ficou: \n");<br />        for(int linha=0 ; linha             for(int coluna = 0; coluna                 System.out.printf("\t %d \t",matriz[linha][coluna]);<br />            }<br />            System.out.println();<br />        }<br /><br />    }<br /><br /><br />}<br />

a

Tags: java, linguagem java