Buscar

Tratamento de ARRAYS em JAVA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

______________________________________________________________________________
Capítulo 2.5. Tratamento de Arrays em Java
2.5.1. Ativando Variáveis Simples – Applet16
2.5.2. Utilizando Arrays Unidimensionais – Applet17
2.5.3. Utilizando Arrays Bidimensionais - Applet18
Capítulo 2.5. Tratamento de Arrays 
Utilização de Variáveis
Por tudo que você aprendeu de linguagens de programação, a utilização de variáveis torna seus programas mais flexíveis. Graças às variáveis, é possível obter entradas dos usuários, armazenar dados convenientemente e recuperá-los pelo nome. A melhor coisa em relação às variáveis é que elas podem ter seus valores constan​temente modificados. Em resumo a utilização de variáveis: Torna seus programas mais flexíveis. Você obtém as entradas dos usuários. Armazena informações e pode recuperá-las pelo nome. O que possibilita ter seus valores constantemente modificados. Array é uma estrutura bastante prática de dados, que aplica o conceito de variável como subscrito em (vetores e matrizes). 
Literais de Caracteres (Tipos de dados)
Além das variáveis normalmente utilizadas, você também usa um literal em uma instrução Java. Literais de Caracteres são quaisquer informações que representam diretamente valores e dados: Números – inteiros e de ponto flutuante. Caracteres char – representação Unicode, com apóstrofos ‘a’ ‘3’. Strings – entre aspas “Java”. Booleans – true e false. Sequência Escape - \b retrocesso, \n nova linha, etc. Até o momento, você aprendeu diversos tipos de variáveis numéricas, incluindo as variáveis inteiras, inteiras longas, em ponto flutuante e em ponto flutuante duplo. Você também conhece variáveis de strings que podem armazenar texto. Agora que você possui um bom conhecimento sobre estes tipos de dados, é chegado o momento de explorar um último tipo de dados, a array (vetores e matrizes), que reduz significativamente o código do programa.
2.5.1. Ativando Variáveis Simples – Applet16
Descrição do Problema 
Com frequência, acontecerão casos em seus programas que você desejará armazenar muitos valores que são relacionados entre si de algum modo. Suponha que você seja o responsável por um campeonato de boliche e queira controlar os pontos de cada um dos participantes. Para isso, você faz um programa para gerenciar os pontos dos jogadores do campeonato, ou seja, dá entrada nos dados, exibe-os e os armazena em variáveis numéricas para possíveis cálculos futuros. Ao iniciar, o programa apresenta uma interface com o usuário, de acordo com as especificações da área de exibição da Applet:
 
Ao executar o programa e partindo da tela anterior, clique em cada campo de texto para digitar os pontos dos jogadores do campeonato de boliche nas três caixas de texto na parte superior da área de exibição do Applet. Após introduzir estes pontos, e provocar um evento ao teclar em <Enter>, o método de processamento action() que trata eventos, aciona o método paint() através da chamada ao repaint() e as exibe na tela, como também copia os pontos em três variáveis na memória. Depois de executar Applet16, encerre o processamento da aplicação, reiniciando o processo de execução, caso queira executar novamente o programa.
Fluxo de Solução do Programa 
Analisando a descrição do problema para desenvolver o fluxo de solução do programa, você poderá entender melhor como as funções irão operar, vejamos:
Informe a Java que o programa usa classes do pacote awt.
Informe a Java que o programa usa classes do pacote applet.
Declare a classe Applet16 herdeira da classe Applet { 
 TextField textField1, textField2, textField3.
 int avg1, avg2, avg3.
 // Métodos públicos que definen a interface com as instâncias da classe. 
 Redefina método init() de Applet p/dispor canvas, cria objetos, adiciona e inicializa { 
 Crie os objetos TextFields com 5 posições. 
 Adicione os objetos TextFields na área de exibição da Applet. 
 Inicialize os textos nos objetos taxtFields com valor nulo “0”. 
 }
 Redefina o método paint() da classe Applet que repinta a área de exibição {
 Exibe instrução na área de trabalho. 
 Acessa as médias dos jogadores nos objetos TextFields na área de exibição. 
 Declare o método que exibe as médias na área de trabalho da Applet. 
 Converta as “médias” em inteiro para as variáveis de memória.
 } 
 Redefina método action() da Applet, executado após o evento <Enter> do usuário {
 Redefina repaint( ) instruindo Java a repintar a área de exibição da applet.
 Informe a Java que o método action() finalizou com sucesso.
 }
 }
Criando o Programa no Ambiente JBuilder 
Siga as instruções do item 3.3.3.3. Criando e Executando o Applet01
// Title: Applet16
// Author: Prof. Pinho 
// Company: Depto. de Informática – UFPA
// Description: Controla a média dos jogadores em um campeonato de boliche.
import java.awt.*;
import java.applet.*;
public class Applet16 extends Applet {
 TextField textField1, textField2, textField3;
 int avg1, avg2, avg3;
 public void init() {
 //this.setSize(400,300);
 textField1 = new TextField(5); 
 textField2 = new TextField(5); 
 textField3 = new TextField(5);
 add(textField1); 
 add(textField2); 
 add(textField3);
 textField1.setText("0"); 
 textField2.setText("0"); 
 textField3.setText("0");
 }
 public void paint(Graphics g) {
 g.drawString("Os pontos dos jogadores de boliche são: ", 50, 80);
 String s = textField1.getText();
 g.drawString(s, 75, 110);
 avg1 = Integer.parseInt(s);
 s = textField2.getText();
 g.drawString(s, 75, 125);
 avg2 = Integer.parseInt(s);
 s = textField3.getText();
 g.drawString(s, 75, 140);
 avg3 = Integer.parseInt(s);
 g.drawString("Clique cada campo texto p/digitar os pontos.", 50, 170);
 g.drawString("Para processar o método action, tecle <Enter>.", 50, 185);
 g.drawString("Para sair do programa, feche a Janela.", 50, 200);
 }
 public boolean action(Event event, Object arg) {
 repaint();
 return true;
 }
}
Resultado da Execução do Programa Applet16
Entendendo o Processamento do Programa
Ao rodar a Appletl6, a primeira coisa que será feita é declarar os objetos da classe TextField e as variáveis inteiras avg1, avg2 e avg3, a seguir faz a chamada ao método init(), para que sejam criados os objetos da classe TextField, adicionar os objetos na tela e inicializá-los. Logo após, é chamado o método paint() para exibir mensagens para os usuários e as médias dos jogadores, que inicialmente são zero. Depois do método paint() executado, o programa fica esperando até que o usuário faça a ação de digitar as médias e teclar em <Enter>, pois só quando êle tecla em <Enter> é que é gerado um evento que aciona automaticamente o método action(), que por sua vez chamará novamenteo método paint() para exibir as novas médias através de uma chamada ao método repaint(). 
Dessa maneira você pode introduzir os resultados do campeonato de boliche nas três caixas de texto ou nos objetos TextField textField1, textField2 e textField3, na parte superior da área de exibição. Após introduzir estas médias, elas são exibidas na tela da Applet, bem como copiadas na memória em três variáveis, avgl, avg2 e avg3. 
Agora examine a listagem do seu programa. Você se lembra quando abordamos em lições anteriores, “Os Loops while e do-while” quando aprendeu a ficar atento para código de programa repetitivo? O que você me diz sobre todas aquelas chamadas a getText(), drawStririg() e valueOf() na Listagem do programa correspondente? A única real diferença entre elas é o placar específico de cada jogador que está sendo manipulado. Se você pudesse encontrar alguma maneira de criar um loop a partir desse código, conseguiria reduzir significativamente o programa. Que tal um Loop for que conte de 1 a 3 ?
Mas como usar um loop se estamos amarrados por três variáveis diferentes? A resposta para isto é uma array. Array é uma variável que pode armazenar mais de um valor (podendo ser um conjunto na forma de vetor ou de matriz). Quando você estudou variáveis pela primeira vez, aprendeu que uma variá​vel é como uma caixa na memória que guarda um valor único. Agora, se você pegar uma série dessas caixas e colocá-las juntas, o que você tem? Você tem uma array. Por exemplo, você pode criar uma array para um conjunto de objetos como os objetos TextField que a Applet16 usa para obter os resultados do usuário. Você poderia chamar esta array de textField. Você até pode criar uma array para armazenar as médias de contagens para três jogadores, será necessária uma array que possa armazenar três valores. Esta array poderia ser chamada de avg. 
5.5.2. Utilizando Arrays Unidimensionais – Applet17
Para trabalhar com array unidimensional, você aplica o conceito de variável como subscrito. Agora você tem uma array chamada textField que pode armazenar três objetos e uma array chamada avg que armazena as três médias de resultados dos jogadores. Mas como poderíamos extrair cada média ou objeto individual da array? Faríamos isto adicionando algo chamado subscrito ao nome da array. Um subscrito (também chamado índice) é um número que identifica o elemento de uma array na qual um valor é armazenado. Por exemplo, para referir-se à primeira média na array avg, você deve escrever avg[0]. O subscrito é o número entre colchetes. Neste caso, você está referindo-se à primeira média na array (subscritos de array sempre são iniciados por um zero). Para referir-se à segunda média, você deve escrever avg[1]. A terceira média é avg[2]. 
Se estiver um pouco confuso, observe a figura a seguir, que mostra o aspecto da array avg[] na memória. Neste caso, as três médias de resultados são 145, 192 e 160. O valor de avg[0] é 145, o de avg[1] é 192 e o de avg[2] é 160:
Criando uma Array
Suponha que você precise de uma array que possa armazenar 30 números em ponto flutuante. Primeiramente devemos declarar a array, como segue: float numbers[]; Outra maneira de declarar a array é mover os colchetes após o tipo de dados, como segue: float[] numbers; Após declarar a array, é preciso criá-la na memória. Java permite criar arrays apenas usando o operador new, como segue: numbers = new float[30]; // Define o número de posições da array. A última etapa é inicializar a array, uma tarefa que poderia ser concretizada com o uso de um loop for:
for (int x=0; x<30; ++x)
 numbers[x] = (float)x; 
Estas linhas de código-fonte Java inicializam a array numbers[] de 0.0 a 29.0 e obser​ve como o loop vai somente até 29. Isto porque, embora haja 30 elementos na array numbers[], esses elementos são indexados com início em 0(zero) e não em 1 (um). Isto é, o subscrito é sempre um número menor do que o elemento que você está acessando. O primeiro elemento tem um subscrito de 0, o segundo um subscrito de 1, o terceiro um subscrito de 2 e assim por diante.
Descrição do Problema 
Como foi visto no capítulo anterior, a maioria das literais numéricas num programa Java pode ser substituída por valores numéricos. Suponha que você fosse usar a variável como subscrito para a array avg[]. Depois (baseado nos pontos citadas anteriormente), se o valor de x for 1, o valor de avg[x] será 192. Se o valor de x for 3, o valor de avg[x] será 160. Consideremos agora um último e intuitivo salto, pense sobre a utilização da variável de subscrito x como sendo a variável de controle num loop for e o subscrito para as arrays textField[] e avg []. Se você usar um loop for que conte de 0 a 2, poderá manipular todas os três pontos dos jogadores com muito menos código do que o programa original. Baseando-se no programa Applet16 que mostra como isto é feito de forma normal, desenvolva a Applet17 para executar os mesmos procedimentos, porém utilizando o tratamento de arrays e variáveis como subscrito, a partir de uma interface com o usuário, de acordo com as especificações da área de exibição da Applet, a seguir:
Inicialmente você pode declarar uma array chamada textField que pode armazenar três objetos e uma array chamada avg que armazena três médias de resultados dos jogadores:
TextField textField[];
int avg[]
int avg[]; Estas declarações são bem parecidas com outras declarações já vistas, exceto pelo fato de que ambos os nomes de variáveis terminam com um conjunto de colchetes. Os colchetes informam a Java que estamos declarando arrays e não variáveis convencionais. Já que declaramos as arrays, temos de criá-las. Para a nossa Appletl7, isto poderia ficar da seguinte forma.
textField = new TextField[3];
avg = new int[3];
Aqui usamos o operador new para criar as arrays. Para informar a Java os tipos de arrays a serem criadas, devemos colocar após new o tipo de dados e o tamanho da array entre colchetes. Em outras palavras, a primeira linha acima cria uma array que pode armazenar três objetos TextField. A segunda linha cria uma array que pode armazenar três inteiros. A partir do momento em que tiver suas arrays criadas, você pode usar um loop para reduzir a quantidade de código necessária para inicializar as arrays. Por exemplo, o modo mais longo de inicializar as arrays (sem usar um loop) seria parecido com o indicado a seguir:
textField[0] = new TextField(5);
add(textField[0]);		
textField[0] = setText(“0”);
textField[1] = new TextField(5);
add(textField[1]);		
textField[1] = setText(“0”);
textField[2] = new TextField(5);
add(textField[2]);		
textField[2] = setText(“0”);
À medida que adquirir prática, você poderá usar uma variável, especificamente como uma variável de controle de loop, como subscrito da array. É isto o que vamos fazer na Applet17, o que a capacita a inicializar a array como mostrado a seguir:
for (int x=0; x<3; ++x) {
 textField[x] = new TextField(5);
 add(textField[x]);
 textField[x].SetText(“0”);
}
Na primeira passagem pelo loop, x é igual a 0, de modo que o elemento 0 (o primeiro elemento) da array textField está sendo tratado. Na próxima passagem pelo loop, x é igual a 1, de modo que o elemento 1 da array está sendo manipulado no núcleo do loop. Finalmente, quando x for igual a 2, o programa trata do terceiro elemento da array. Como pode ser visto, utilizar um loop com uma array pode facilitar enormemente o tratamento de um grupo de valores relacionados. Imagine quantas linhas de código-fon​te 
você economizaria se a array tivesse 1.000 elementos e não apenas três. Para acomodar a array maior, você tem apenas de modificar x<3 para x<1000 na primeira linha do loop for.
 Tenha cuidado para não tentar acessar um elemento de array inexistente. Se 
 no programa proposto você tentar, por exemplo, acessar textField[3], estará 
 além dos limitesda array. Java gerará uma exceção quando isso ocorrer, o 
 que significa que sua Applet pode ou não executar da maneira que você
 quer. (Você aprenderá mais a respeito de exceções no capítulo que trata 
 especificamente de “Exceções”). 
O método init() não é o único local onde Appletl7 tira proveito de um loop para tratar as arrays do programa. No método paint(), você pode ver o loop apresentado a seguir:
for (int x=0, x<3; ++x) {
 String s = textField[x].getText();
 g.drawString(s, 75, 110+x*15);
 avg[x] = Integer.parseInt(s);
} 
Este loop simplifica a impressão dos resultados dos jogadores e da carga da array avg[] com os resultados. Novamente, imagine quanto tempo e espaço você economizaria se as arrays em questão tivessem milhares de elementos e não apenas três. Ë nessas horas que você realmente aprende a apreciar as arrays.
 As posições de memória que compõem a array são chamadas de elementos 
 do array. Por exemplo, na array chamada numbers[], numbers[0] é o 
 primeiro elemento da array. O numbers[1] é o segundo. O numbers[2] é o 
 terceiro elemento. O motivo para numbers[0] ser o primeiro elemento da
 array deve-se ao número zero dentro do subscrito. É o número dentro do
 subscrito que define qual posição da array está sendo referenciada.
Fluxo de Solução do Programa 
Analisando a descrição do problema facilita desenvolver o fluxo de solução do programa, para explicitar melhor como as funções irão operar, vejamos:
Informe a Java que o programa usa classes do pacote awt
Informe a Java que o programa usa classes do pacote applet
Declare a classe Applet17 herdeira da classe Applet {
 Declare as arrays do tipo TextField 
 e int da classe Applet17
 // Métodos públicos que definen a interface com as instâncias da classe Aplet17 
 Redefina o método init() de classe Applet { 
 Dimensione as arrays textField e int com três elementos cada.
 textField = new TextField[3]. 
 avg = new int[3]. 
 Repita de 0 a 2 { 
 Crie um novo objeto textField e o armazene na array.
 Adicione o novo objeto textField na área de exibição da Applet.
 Inicialize o texto no novo objeto taxtField com o valor nulo “0”. 
 } 
 { 
 Redefina o método paint() da classe Applet que disponibiliza área de exibição {
 Exibe uma linha de texto na área de trabalho da Applet.
 Repita de 0 a 2 {
 Obtenha as médias dos jogadores no objeto textField na área de exibição.
 Desenhe o texto recuperado na área de exibição da Applet.
 Converta as “médias” em inteiro e armazene na array de inteiros.
 } 
 } 
 
 Redefina método action() da Applet, executado após o evento <Enter> do usuário { 
 Redefina repaint( ) instruindo Java a repintar a área de exibição da applet.
 Informe a Java que o método action() finalizou com sucesso.
 } 
 } 
Criando o Programa no Ambiente JBuilder
Siga as instruções do item 3.3.3.3. Criando e Executando o Applet01
// Title: Applet17
// Author: Prof. Pinho
// Company: Depto. de Informática - UFPA
// Description: Controla as medias dos jogadores de Boliche,
// utilizando o tratamento de arrays unidimensionais e variáveis como subscrito.
import java.awt.*;
import java.applet.*;
public class Applet17 extends Applet {
 TextField textField[];
 int avg[];
 public void init() {
 textField = new TextField[3];
 avg = new int[3];
 for (int x=0; x<3; ++x) {
 textField[x] = new TextField(3);
 add(textField[x]);
 textField[x].setText("0");
 }
 }
 public void paint(Graphics g) {
 g.drawString("Os pontos dos jogadores de boliche são: ", 50, 80);
 for (int x=0; x<3; ++x) {
 String s = textField[x].getText();
 g.drawString(s, 75, 110 + x*15);
 avg[x] = Integer.parseInt(s);
 }
 g.drawString("Clique em cada campo de texto p/digitar os pontos.", 50, 170);
 g.drawString("Para acionar action, tecle <enter>.", 50, 185);
 g.drawString("Para sair do programa, feche Janela.", 50, 200);
 }
 public boolean action(Event event, Object arg) {
 repaint();
 return true;
 }
}
Resultado da Execução do Programa Applet17
Entendendo o Processamento do Programa 
Ao rodar a Appletl7, a primeira coisa que será feita é declarar uma array chamada textField que pode armazenar três objetos da classe TextField e uma array chamada avg do tipo int que armazena três médias de resultados dos jogadores, a seguir faz a chamada ao método init(), para que sejam criados os objetos da classe TextField, adicionar os objetos na tela e inicializá-los. Logo após, é chamado o método paint() para exibir mensagens para os usuários e as médias dos jogadores, que inicialmente são zero. Depois do método paint() executado, o programa fica esperando até que o usuário faça a ação de digitar as médias e teclar em <Enter>, pois só quando êle tecla em <Enter> é que é gerado um evento que aciona automaticamente o método action(), que por sua vez chamará novamente o método paint() para exibir as novas médias através de uma chamada ao método repaint(). Dessa maneira você pode introduzir os resultados do campeonato de boliche nas três caixas de texto ou nos objetos TextField relativos a textField[0] a textField[1] e textField[2], na parte superior da área de exibição. Após introduzir estas médias, 
elas são exibidas na tela da Applet, bem como copiadas em memória na array avg[] de posições avg[0], avg[1] e avg[2]. O limite máximo de variação do índice é o número total de elementos menos 1.
2.5.3. Utilizando Arrays Bidimensionais - Applet18
Até o momento, vimos arrays unidimensionais que armazenam seus dados em uma lista ou vetor. Porém, a maioria das linguagens de programação também suporta arrays bidimensionais que são matrizes mais parecidas com tabelas do que listas. Dê uma olhada nos exemplos que se seguem. A primeira array na figura é uma array simples de dimensão semelhante às até então aqui usadas. O próximo tipo de array na figura é bidimensional, que funciona como o tipo de tabela de planilhas eletrônicas típicas que você está acostumado a ver.
 0 1 2 3 
	
	
	
	
 Array Unidimensional
 0 1 2 3 
	0
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	11
	12
	13
	14
	15
 Array bidimensionalPara criar uma array bidimensional de inteiros como da segunda figura anterior, devemos usar uma linha de código assim:
int table[][]; // Declara o tipo da array
table = new int [4][4]; // Cria e dimensiona a array
ou
int tabela[][] = new int[4][4]; // Declara, cria e dimensiona
Esta linha de código Java cria uma tabela que pode armazenar 16 valores, quatro por quatro. O primeiro subscrito seleciona a coluna e o segundo seleciona a linha. Para inicializar uma array deste tipo com valores, poderíamos usar as linhas mostradas a seguir, o que daria como resultado a array bidimensional mostrada anteriormente:
tabela [0][0] = 0;
tabela [1][0] = 1;
tabela [2][0] = 2;
tabela [3][0] = 3;
tabela [0][1] = 4;
tabela [1][1] = 5;
tabela [2][1] = 6;
tabela [3][1] = 7;
tabela [0][2] = 8;
tabela [1][2] = 9;
tabela [2][2] = 10;
tabela [3][2] = 11;
tabela [0][3] = 12
tabela [1][3] = 13;
tabela [2][3] = 14;
tabela [3][3] = 15;
Referindo-se a um valor armazenado numa array bidimensional através da utilização de subscritos tanto para a coluna como para a linha na qual o valor desejado está armazenado. 
Para recuperar o valor 11 da array tabela[][] apresentada anteriormente, usamos uma linha do tipo:
int valor = tabela[3][2]; 
Uma maneira rápida de inicializar uma array bidimensional é usar loops for aninhados, como mostramos a seguir:
for (int x=0; x<3; ++x) {
 for (int y=0; y>3; ++y) {
 tabela[x][y] = 5;
 }
} 
Se você nunca havia visto loops aninhados antes, então está prestes a descobrir como eles são práticos. No caso do exemplo anterior, o loop externo (loop x) inicia primeiro, configurando x em 0. Mas o núcleo do loop é outro loop. 
Portanto, o loop interno (loop y) inicia, configura y para 0, trazendo o programa para a linha que inicializa um elemento da array. Pelo fato de tanto x como y serem iguais a 0, o elemento de array tabela[0][0] fica configurado ou inicializado em 5. 
Depois o loop interno configura y para 1, significando que ta​bela[0][1] fica configurado em 5. Quando o loop interno termina, o programa desvia novamente para o loop externo, configurando x para 1. O loop interno é repetido nova​mente, sendo que desta vez x fica igual a 1 e com y variando de 0 a 2. Finalmente, quando ambos os loops terminarem, a array toda é inicializada.
É claro que para criar a array bidimensional[4][4] apresentada anteriormente, e que armazena os valores de (1 a 15) com o uso de loops você tem de ser um pouco mais astuto, como mostra a Listagem de código Java a seguir. Percorra cada um dos loops para sentir como a array é inicializada:
for (int x=0; x<3; ++x) {
 for (int y=0; y<3; ++y) {
 tabela[x][y] = x + y*4;
 }
}
Para criar uma array bidimensional, suponhamos que você precise de uma array parecida com uma tabela que possa armaze​nar 80 inteiros em oito colunas e dez linhas. Declaremos, primeiramente, a array: int numbers[][]; Após declararmos a array, precisaremos criá-la na memória do computador, como segue:
numbers = new int[8][10]; 
A ultima etapa é inicializarmos a array, provavelmente usando loops for aninhados:
for (int x=0; x<8; ++x) {
 for (int y=0; y<10; ++y) {
 numbers[x][y] = 0;
 }
} 
Estas linhas fazem com que a array numbers[][] seja inicializada para zero em todas as posições. Embora Java não
suporte arrays multidimensionais no sentido convencional, ele permite a criação de arrays de arrays, o que, no
final das contas, acaba resultando na mesma coisa.
Descrição do Problema 
Para ter certeza de que você entendeu como as arrays funcionam, você colocará uma array bidimensional em funcionamento num programa chamado Applet18. A applet Applet18 declara, cria e inicializa uma array bidimensional com seis colunas e oito linhas. Tente associar estes elementos da array às COLUNAS e LINHAS de uma planilha. 
O programa imprime então o conteúdo da array na área de exibição da Applet, de modo que você possa ver que a array realmente armazena os valores para os quais ela foi inicializada. A seguir é mostrada a área de exibição da Applet, que demonstra a interface com o usuário, de acordo com as especificações: 
Fluxo de Solução do Programa 
A análise da descrição do problema facilita o desenvolvimento do fluxo de solução do programa, que ajuda a explicitar melhor como as funções irão operar, vejamos:
Informe a Java que o programa usa classes do pacote awt.
Informe a Java que o programa usa classes do pacote applet.
Declare a classe Applet18 herdeira da classe Applet { 
 Declare uma array inteira e bidimensional.
 // Métodos públicos que definen a interface com as instâncias da classe. 
 Redefina o método init() de classe Applet { 
 Crie uma arrays inteira com seis colunas e 8 linhas.
 Repita de 0 a 5 
 Repita de 0 a 7
 Inicialize o elemento da array atualmente indexado.
 Fim Repita
 Fim Repita
 }
 Redefina o método paint() da classe Applet { 
 Repita de 0 a 5
 Repita de 0 a 7
 Converta o elemento da array numa String.
 Exiba o conteúdo do elemento da array na área de trabalho da Applet.
 Fim Repita
 Fim Repita
 }
} 
Criando o Programa no Ambiente Jbuilder
// Title: Applet18
// Author: Prof. Pinho
// Company: Depto. de Informática – UFPA
// Description: Cria um Array Bidimensional de 6 colunas e 8 linhas e exibe o conteúdo do Array na tela.
import java.awt.*;
import java.applet.*;
public class Applet18 extends Applet {
 int table[][];
 public void init() {
 table = new int[2][4];
 for (int x=0; x<2; ++x)
 for (int y=0; y<4; ++y)
 table[x][y] = x+y*2;
 }
 public void paint(Graphics g) {
 g.drawString("Matriz Bidimensional [2][4]:", 50, 30);
 for (int x=0; x<2; ++x)
 for (int y=0; y<4; ++y) {
 String s = String.valueOf(table[x][y]);
 g.drawString(s, 50+x*25, 50+y*15);
 }
 }
}
Resultado da Execução do Programa Applet18
Entendendo o Processamento do Programa 
A Applet18 declara a array table[][] e acionando o método init() cria e inicializa uma array bidimensional com seis colunas e oito linhas, de forma muito semelhante quando se associa estes elementos da array às COLUNAS e LINHAS de uma planilha.. O programa, logo após, chama o método paint() repinta então o conteúdo da array na área de exibição da Applet, de modo que você possa ver que o programa através da array realmente armazena os valores para os quais ela foi inicializada. Também observe em init() e paint() como os loops aninhados não possuem chaves como o exemplo mostrado em outras explicações. Isto porque, quando há apenas uma instrução num bloco de programa, as chaves são opcionais. No método init() da Appletl8, o loop externo contém apenas uma instrução, que é o loop for. O loop init() contém apenas uma única instrução, que é a linha que inicializa o elemento atualmente indexado da array. No método paint(), o loop externo contém apenas uma instrução,que é o loop for interno. Entretanto, o loop interno contém duas instruções, necessitando então de chaves de modo que o bloco de programa seja indicado. Genericamente, as arrays são estruturas de dados poderosas que permitem o armazenamento de diversos valores relacionados entre si usando o mesmo nome de variável. Uma array unidimensio​nal é bem parecida com uma lista de valores que pode ser acessada, bastando para tanto que se informe a Java o subscrito (ou índice) apropriado. Mas pelo fato de os subscritos de array, em Java, sempre iniciarem com 0, o subscrito é sempre uma unidade menor do que o elemento associado. No nosso exemplo, também verifica-se que é possível criar arrays multidimensionais (ou, para ser mais preciso, arrays de arrays). Uma array bidimensional é organizada de forma muito seme​lhante a uma tabela. Para acessar seus elementos, são necessários dois subscritos. O primeiro identifica a coluna da tabela e o segundo identifica a linha.
145
192
160
avg[0]
avg[1]
avg[2]
0
1
2
3 
�PAGE �
�PAGE �71�
Prof. Orlando Pinho de Assis

Outros materiais