Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
1
Arrays em Java
Alberto Costa Neto
DComp - UFS
2
Roteiro
Arrays
Arrays de Objetos
Arrays Multidimensionais
3
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???
4
Arrays
Algo assim...
7.5f
8.9f
8.3f
0
1
2 medias
medias [0] = 7.5f;
medias [1] = 8.9f;
medias [2] = 8.3f;
5
Arrays
O que é um array?
7.5f
8.9f
8.3f
0
1
2 medias
medias [0] = 7.5f;
medias [1] = 8.9f;
medias [2] = 8.3f;
Arrays são objetos (Java)
Sintaxe especial
Array
6
Arrays
Características de um array
7.5f
8.9f
8.3f
0
1
2 medias
medias [0] = 7.5f;
medias [1] = 8.9f;
medias [2] = 8.3f;
Elementos:
- Identificados pelo mesmo nome
- Diferenciados apenas pelo índice
Armazenam valores do mesmo tipo
Array
7
Arrays
Como declarar um array?
float [ ] medias;
float medias [ ];
int [ ] matriculas;
int matriculas [ ];
String [ ] nomes;
String nomes [ ];
8
Arrays
Como criar um array?
Usando “new”
Usando inicializadores
String [ ] nomes; nomes = new String [3]; float [ ] medias = new float [3];
String[ ] nomes = { “Maria”, “Pedro”, “João” }; float [ ] medias = {7.5f , 8.9f , 8.3f } ;
9
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;
10
Arrays
Outro exemplo
String[] nomes = new String [3]; Scanner e = new Scanner(System.in); for (i = 0 ; i < 3; i++) nomes[i] = e.next();
11
Arrays
Acessando os valores armazenados
String[] nomes = new String [3]; for (i=0 ; i < nomes.lenght ; i++) System.out.println( nomes[i] );
12
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
13
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)
14
Arrays de Objetos
O que faz este código?
Quantas contas foram criadas?
Conta[] minhasContas; minhasContas = new Conta[10];
15
Arrays de Objetos
Foi criado um array para guardar referências para contas
Conta[] minhasContas; minhasContas = new Conta[10];
0
1
2 minhasContas
Array
...
16
Arrays de Objetos
Populando o array Conta[] minhasContas; minhasContas = new Conta[10]; Conta novaConta = new Conta(); novaConta.creditar(1000f); minhasContas[0] = novaConta;
0
1
2 minhasContas
Array
Objeto novaConta
...
17
Arrays de Objetos
Outra forma minhasContas[1] = new Conta(); minhasContas[1].creditar(500f);
0
1
2 minhasContas
Array
Objeto novaConta
Outro objeto
Conta ...
18
Arrays de Objetos
Conta
numero: int saldo: double
Conta (numero: int) getNumero(): int getSaldo(): double creditar(valor: double) debitar(valor: double)
Expandindo...
Banco
nome: String sigla: String ultimo: int
cadastrarConta (conta) localizarConta(num)
*
1
19
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;
}
20
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; } ...
21
Arrays de Objetos
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; // muda a referência } contas[ultimo] = c; ultimo = ultimo + 1; }
Cadastro flexível
22
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
23
Arrays Multidimensionais
a
a[0]
a[1]
a[0][0]
a[0][3]
.
.
.
a[1][0]
a[1][3]
.
.
. 0 0 0 0
0 0 0 0 O tipo da variável ‘a’ é byte[ ][ ]
O tipo de a[0] e a[1] é byte[]
O tipo dos a[i][j] é byte
byte[ ][ ] a = new byte[2][4];
O que faz este código?
24
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
25
Arrays Multidimensionais
int[ ][ ] e = {{1, 2}, {3, 4, 5}, {5, 6, 7, 8}};
O que faz este código?
1
2
5
3
4
5 6
7
8
e
e [0]
e [2]
e [1]
e [0] [0]
e [0] [1]
e [1] [0]
e [1] [1]
e [1] [2]
e [2] [0]
e [2] [1]
e [2] [2]
e [2] [3]
26
Arrays Multidimensionais
byte [ ][ ] e = new byte[ 2 ][ 4 ];
Qual a diferença?
byte [ ][ ] e = new byte[ 2 ][ ];
e [ 0 ] = new byte [ 3 ];
e [ 1 ] = new byte [ 5 ];
27
Arrays Multidimensionais
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; }
O que faz este código?
28
Arrays Multidimensionais
Resultado
triangle
0
1
2
3
4
2
3
4
5
4
5 6
6 7 8
triangle[i]
triangle[i] [j]
29
Referências
Slides “Vetores” Prof. Marcos Dósea. UFS. 2010.
Slides “Arrays em Java”, Profa. 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