07 - arrays_java

Propaganda
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

medias
Algo assim...
0
7.5f
1
8.9f
2
8.3f
medias [0] = 7.5f;
medias [1] = 8.9f;
medias [2] = 8.3f;
4
Arrays

O que é um array?
Array
medias
0
7.5f
1
8.9f
2
8.3f
Arrays são objetos (Java)
medias [0] = 7.5f;
Sintaxe especial
medias [1] = 8.9f;
medias [2] = 8.3f;
5
Arrays

Características de um array
Array
medias
0
7.5f
1
8.9f
2
8.3f
Elementos:
- Identificados pelo mesmo nome
- Diferenciados apenas pelo índice
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];
Array
0
1
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;
Array
Objeto novaConta
0
1
minhasContas
2
...
16
Arrays de Objetos

Outra forma
minhasContas[1] = new Conta();
minhasContas[1].creditar(500f);
Array
Objeto novaConta
0
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)
Banco
1
*
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[0]
a
a[1]
0 a[0][0]
.
0
.
.
0
0 a[0][3]
0 a[1][0]
.
0
.
.
0
0 a[1][3]
O tipo da variável ‘a’ é byte[ ][ ]
O tipo de a[0] e a[1] é byte[]
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}};
e [0]
e [1]
e
e [2]
1
e [0] [0]
2
e [0] [1]
3
e [1] [0]
4
e [1] [1]
5
e [1] [2]
5
e [2] [0]
6
e [2] [1]
7
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
triangle[i] [j]
1
2
2
3
4
3
4
5
6
4
5
6
7
8
28
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
29
Download