Arrays em Java Alberto Costa Neto DComp - UFS 1
Roteiro Arrays Arrays de Objetos Arrays Multidimensionais 2
Arrays Como armazenar as médias dos 3 alunos que se candidataram para fazer parte do grupo de pesquisa? float media1 = 7.5f; float media2 = 8.9f; float media3 = 8.3f; Não existiria uma estrutura de dados que armazenasse todos os dados, tendo apenas um nome como referência??? 3
Arrays Algo assim... medias 0 1 2 7.5f 8.9f 8.3f medias [0] = 7.5f; medias [1] = 8.9f; medias [2] = 8.3f; 4
Arrays O que é um array? 0 1 Array 7.5f 8.9f Arrays são objetos (Java) medias 2 8.3f medias [0] = 7.5f; Sintaxe especial medias [1] = 8.9f; medias [2] = 8.3f; 5
Arrays Características de um array 0 1 Array 7.5f 8.9f Elementos: - Identificados pelo mesmo nome - Diferenciados apenas pelo índice medias 2 8.3f medias [0] = 7.5f; Armazenam valores do mesmo tipo medias [1] = 8.9f; medias [2] = 8.3f; 6
Arrays Como declarar um array? float [ ] medias; float medias [ ]; int [ ] matriculas; int matriculas [ ]; String [ ] nomes; String nomes [ ]; 7
Arrays Como criar um array? Usando new String [ ] nomes; nomes = new String [3]; float [ ] medias = new float [3]; Usando inicializadores String[ ] nomes = { Maria, Pedro, João }; float [ ] medias = {7.5f, 8.9f, 8.3f } ; 8
Arrays Atribuindo valores String[ ] nomes = new String [3]; nomes[0] = Maria ; nomes[1] = Pedro ; nomes[2] = João ; float [ ] medias = new float [3]; medias [0] = 7.5f; medias [1] = 8.9f; medias [2] = 8.3f; 9
Arrays Outro exemplo String[] nomes = new String [3]; Scanner e = new Scanner(System.in); for (i = 0 ; i < 3; i++) nomes[i] = e.next(); 10
Arrays Acessando os valores armazenados String[] nomes = new String [3]; for (i=0 ; i < nomes.lenght ; i++) System.out.println( nomes[i] ); 11
Dever de Sala 1) Escreva um programa em Java que leia dez número inteiros e em seguida calcule e mostre: a) Todos os números pares b) Todos os números ímpares c) A quantidade de números pares e ímpares 12
Dever de Sala 2) Escreva um programa em Java que armazena o nome de 5 alunos e de suas respectivas médias. O programa deve exibir: a) Nome do aluno com maior média (desconsiderar empates) b) Nome dos alunos reprovados (média < 5) Obs.: Usar 2 arrays (um p/ nomes e outro p/ médias) 13
Arrays de Objetos O que faz este código? Conta[] minhascontas; minhascontas = new Conta[10]; Quantas contas foram criadas? 14
Arrays de Objetos Foi criado um array para guardar referências para contas Conta[] minhascontas; minhascontas = new Conta[10]; 0 1 Array minhascontas 2... 15
Arrays de Objetos Populando o array Conta[] minhascontas; minhascontas = new Conta[10]; Conta novaconta = new Conta(); novaconta.creditar(1000f); minhascontas[0] = novaconta; 0 1 Array Objeto novaconta minhascontas 2... 16
Arrays de Objetos Outra forma minhascontas[1] = new Conta(); minhascontas[1].creditar(500f); 0 Array Objeto novaconta 1 minhascontas 2... Outro objeto Conta 17
Arrays de Objetos Expandindo... Conta numero: int saldo: double Conta (numero: int) getnumero(): int getsaldo(): double creditar(valor: double) debitar(valor: double) * 1 Banco nome: String sigla: String ultimo: int cadastrarconta (conta) localizarconta(num) 18
Arrays de Objetos class Banco {... private Conta[] contas; private int ultimo = 0; public Banco( ) { contas = new Conta[100]; } public void cadastrar(conta c) { contas[ultimo] = c; ultimo = ultimo + 1; } 19
Arrays de Objetos private Conta localizarconta (int n) { for (int i = 0; i < ultimo; i++) if (contas[i].getnumero() == n) return conta[i]; } return null; }... 20
Arrays de Objetos Cadastro flexível public void cadastrar(conta c) { if (ultimo==contas.length) { Conta[] aux = new Conta[ultimo+10]; for (int i = 0; i < contas.length ; i++) aux[i]= contas[i]; contas = aux; } contas[ultimo] = c; ultimo = ultimo + 1; } // muda a referência 21
Dever de Sala 3) Escreva um programa em Java que armazena o nome de 5 alunos e de suas respectivas médias. O programa deve exibir: a) Nome do aluno com maior média (desconsiderar empates) b) Nome dos alunos reprovados (média < 5) Obs.: Usar 1 array contendo as referências para objetos Aluno 22
Arrays Multidimensionais O que faz este código? byte[ ][ ] a = new byte[2][4]; a a[0] a[1] 0 a[0][0] O tipo da variável a é byte[ ][ ] 0 0. 0 a[0][3] O tipo de a[0] e a[1] é byte[] 0 0 0 0 a[1][0]. a[1][3] O tipo dos a[i][j] é byte 23
Arrays Multidimensionais São implementados como arrays de arrays. Para cada dimensão basta especificar um par de colchetes na declaração da variável 24
Arrays Multidimensionais O que faz este código? int[ ][ ] e = {{1, 2}, {3, 4, 5}, {5, 6, 7, 8}}; 1 e [0] [0] 2 e [0] [1] e [0] 3 e [1] [0] e e [1] e [2] 4 5 e [1] [1] e [1] [2] 5 6 7 e [2] [0] e [2] [1] e [2] [2] 8 e [2] [3] 25
Arrays Multidimensionais Qual a diferença? byte [ ][ ] e = new byte[ 2 ][ 4 ]; byte [ ][ ] e = new byte[ 2 ][ ]; e [ 0 ] = new byte [ 3 ]; e [ 1 ] = new byte [ 5 ]; 26
Arrays Multidimensionais O que faz este código? short[ ][ ] triangle = new short[5][ ]; for(int i = 0; i < triangle.length; i++) { } triangle[i] = new short[i+1]; for(int j=0; j < i+1; j++) triangle[i][j] = (short) i + j; 27
Arrays Multidimensionais Resultado triangle[i] 0 triangle[i] [j] 1 2 triangle 2 3 3 4 4 5 6 4 5 6 7 8 28
Referências Slides Vetores Prof. Marcos Dósea. UFS. 2010. Slides Arrays em Java, Prof a. Débora. UFS. 2010 Slides Arrays Java Prof Giovanny. Java.UFS. 2009. Caelum. Java e Orientação a Objetos http://www.caelum.com.br/apostilas/ Capítulo 5 Java How to Program Capítulo 7 29