Buscar

LPI 06 - Entrada Textual de Dados - Tratamento de Exceção

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

Prévia do material em texto

27/08/2014
1
Linguagem de Programação I
Entrada Textual de Dados
Tratamento de Exceção
Joinvile Batista Junior
UFGD - LPI 06 - Joinvile Batista Junior 22
Leitura Textual
• variável pública System.in
– armazena entrada digitada pelo teclado
• classe InputStreamReader do pacote java.io
– converte entrada do teclado em caracteres
• classe BufferedReader do pacote java.io
– método readLine() da classe BufferedReader
• remove os caracteres de controle de fim de linha <CR> e <LF>
• retorna string correspondente ao caracteres da linha digitada
27/08/2014
2
UFGD - LPI 06 - Joinvile Batista Junior 33
Tratamento de Exceções propagadas na Leitura Textual
IOException
• significado : exceção de Entrada/Saída 
• utilização : para obter string da linha digitada no teclado
– método readLine() pode propagar exceção IOException
NumberFormatException
• significado : exceção de formato de número
• utilização : se for necessário converter string lido para inteiro
– converter para objeto da classe Integer e extrair inteiro
– int número = Integer.valueOf(string_lido).intValue();
• método valueOf() converte String para Integer
• método intValue() extrai inteiro (int) da classe Integer
– método valueOf() pode progagar exceção NumberFormatException
UFGD - LPI 06 - Joinvile Batista Junior 44
Pacote: entidade – Classe: Aluno – 1/2
package entidade;
import java.util.ArrayList;
import java.io.Serializable;
public class Aluno implements Serializable {
// Dados e Métodos de Classe
private static ArrayList<Aluno> alunos = new ArrayList<Aluno>();
public static void inserir (Aluno novo_aluno) {
alunos.add(novo_aluno);
}
public static ArrayList<Aluno> getAlunos () {
return alunos;
}
public static void setAlunos (ArrayList<Aluno> alunos) {
Aluno.alunos = alunos;
}
27/08/2014
3
UFGD - LPI 06 - Joinvile Batista Junior 55
Pacote: entidade – Classe: Aluno – 2/2
// Dados e Métodos de Objeto
private String nome;
private int idade;
public Aluno (String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
public String getNome () {
return nome;
}
public int getIdade () {
return idade;
}
}
UFGD - LPI 06 - Joinvile Batista Junior 66
Pacote: interfaces – Classe: EntradaSaída – 1/5
package interfaces;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import entidade.Aluno;
import interface.Serialização;
public class EntradaSaída {
private static BufferedReader buffer;
27/08/2014
4
UFGD - LPI 06 - Joinvile Batista Junior 77
Pacote: interfaces – Classe: EntradaSaída – 2/5
public static void loopleituraAlunos () {
buffer = new BufferedReader (new InputStreamReader (System.in));
String continuação = "S";
Aluno aluno = null;
while (continuação.equalsIgnoreCase ("S")) {
// converte caracteres sempre para maiúsculos
aluno = obtémAluno();
if (aluno != null) Aluno.inserir (aluno);
System.out.print ("Continuar [S/N] : ");
try {
continuação = buffer.readLine();
} catch (IOException exceção) {
System.out.println ("Erro na leitura da linha");
}
System.out.println();
}
}
UFGD - LPI 06 - Joinvile Batista Junior 88
Pacote: interfaces – Classe: EntradaSaída – 3/5
private static Aluno obtémAluno () {
String nome = lerString ("nome do aluno");
if (nome == null) return null;
int idade = lerInteiroPositivo ("idade do aluno");
if (idade < 0) return null;
return new Aluno (nome, idade);
}
27/08/2014
5
UFGD - LPI 06 - Joinvile Batista Junior 99
Pacote: interfaces – Classe: EntradaSaída – 4/5
private static int lerInteiroPositivo (String dado) {
String string_número = "";
int número = 0;
System.out.println ("Informe " + dado + " : ");
try {
string_número = buffer.readLine ();
número = Integer.valueOf (string_número).intValue();
} catch (IOException exc) {
System.out.println ("Erro na leitura de: " + dado);
return -1;
} catch (NumberFormatException exc) {
System.out.println ("Erro na conversão para inteiro de: " + dado);
return -1;
}
return número;
}
UFGD - LPI 06 - Joinvile Batista Junior 1010
Pacote: interfaces – Classe: EntradaSaída – 5/5
private static String lerString (String dado) {
String string = "";
System.out.println ("Informe " + dado + " : ");
try {
string = buffer.readLine();
} catch (IOException exc) {
System.out.println ("Erro na leitura de: " + dado);
return null;
}
return string;
}
public static void mostraAlunos () {
for (Aluno aluno : Aluno.getAlunos()) {
System.out.println (aluno.getNome() + " (" + aluno.getIdade() + ")");
} 
}
}
27/08/2014
6
UFGD - LPI 06 - Joinvile Batista Junior 1111
Pacote: controle – Classe: LeituraTextual – 1/2
package controle;
import java.util.ArrayList;
import interfaces.EntradaSaída;
import entidade.Aluno;
import persistência.Serialização;
public class LeituraTextual {
public static void main (String[] args) {
recuperaAlunos (); // recupera alunos existentes no arquivo
EntradaSaida.mostraAlunos (); // mostra alunos antigos (existentes no arquivo)
EntradaSaida.loopLeituraAlunos (); // le alunos novos
EntradaSaida.mostraAlunos (); // mostra alunos antigos e novos
salvaAlunos (); // salva alunos antigos e novos no arquivo
}
UFGD - LPI 06 - Joinvile Batista Junior 1212
Pacote: controle – Classe: LeituraTextual – 2/2
public static void recuperaAlunos () {
ArrayList objetos_aplicação
= (ArrayList) Serialização. recuperar(“Aplicação");
if (objetos_aplicação != null)
Aluno.setAlunos((ArrayList<Aluno>) objetos_aplicação.get(0));
}
public static void salvaAlunos () {
ArrayList objetos_aplicação = new ArrayList();
ArrayList<Aluno> alunos = Aluno.getAlunos ();
objetos_aplicação.add(alunos);
Serialização.salvar (objetos_aplicação, “Aplicação");
}
}
27/08/2014
7
UFGD - LPI 06 - Joinvile Batista Junior 1313
Pacote: persistência – Classe: Serialização – 1/2
package persistência;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class Serialização {
public static void salvar (Object raizObject, String nome_arquivo) {
if (raizObject == null) return;
try { // extensão bds : Base de Dados do Sistema
ObjectOutputStream out = new ObjectOutputStream
(new FileOutputStream (nome_arquivo + ".bds"));
out.writeObject (raizObject);
out.close ();
} catch (Exception exceção) {
System.out.println ("Falha de Salvamento : " + exceção);
}
}
UFGD - LPI 06 - Joinvile Batista Junior 1414
Pacote: persistência – Classe: Serialização – 1/2
public static Object recuperar (String nome_arquivo) {
try { // extensão bds : Base de Dados do Sistema
ObjectInputStream entradaObjectInputStream = new ObjectInputStream
(new FileInputStream (nome_arquivo + ".bds"));
Object raizObject = entradaObjectInputStream.readObject ();
return raizObject;
} catch (Exception exceção) {
System.out.println ("Falha na Recuperação do arquivo : “
+ nome_arquivo + ".bds");
return null;
}
}
27/08/2014
8
UFGD - LPI 06 - Joinvile Batista Junior 1515
Exercícios - 6
• 6.1 – Complete a classe Aluno com os atributos: sexo e estado civil. 
Altere a classe EntradaSaida para acomodar os novos atributos da classe 
Aluno.
• 6.2 – Utilize Entrada Textual de Dados para criar Diretores, Atores, 
Atrizes e Filmes.

Outros materiais