Baixe o app para aproveitar ainda mais
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.
Compartilhar