classe arraylist e arquivo texto_ agenda de contatos - uma abordagem estruturada em java
TRANSCRIPT
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
1/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 1/20
Buscar
favorito (1) marcar como lido tirar dvidas
Classe ArrayList e Arquivo
Texto: Agenda de Contatos -
Uma Abordagem Estruturada
em Java
Veja neste artigo uma aplicao Java para criar e manter uma
agenda de contatos, com os campos nome e telefone, usando a
classe ArrayList e arquivo texto atravs de uma abordagem que
explora os elementos chaves da programao estruturada.
(1) (0)
Caros Amigos,
http://www.devmedia.com.br/favorite/add_finished.asp?comp=25087http://www.devmedia.com.br/favorite/addfavorite.asp?comp=25087 -
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
2/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 2/20
A classe ArrayList permite a criao e a manuteno de uma coleo ou lista indexada
de objetos. Como nos vetores, ndices de um ArrayList so baseados em zero, isto , o
ndice do primeiro elemento zero. Os mtodos fornecidos possibilitam a manipulao
de um elemento baseada na sua posio (ou ndice) numrica na lista, remover
determinado elemento, procurar as ocorrncias de um dado elemento e percorrer
sequencialmente todos os elementos da lista.
Mais informaes sobre a classe ArrayList na implementao de vetores dinmicos (ou
redimensionveis) podem ser obtidas no artigo "Explorando a Classe ArrayList no Java
".
Os computadores utilizam os arquivos como estruturas de dados para armazenamento
de longo prazo de grandes volumes de dados. Dados mantidos em arquivos so
chamados de dados persistentes porque eles existem alm da durao da execuo
do programa em dispositivos de armazenamento secundrio como disquete, disco
rgido, entre outros. Em um arquivo texto os dados so armazenados como umasequncia de caracteres dividida em linhas terminadas por um caractere de fim de
linha. Os arquivos no formato texto geralmente so encontrados com nomes com a
extenso padro TXT (abreviao de TEXT, ou texto em ingls) e podem ser
facilmente lidos ou abertos por qualquer programa que l texto e, por essa razo, so
considerados universais.
Os arquivos texto foram abordados em outros 3 (trs) artigos:
1.Arquivos e fluxos de dados - Revista Easy Java Magazine 12
2. Criando e Gravando dados em Txt com Java
3. Lendo dados de Txt com Java
A programao estruturada uma forma de programao de computadores que
estabelece uma disciplina ou sistemtica para o desenvolvimento de algoritmos.
http://www.devmedia.com.br/lendo-dados-de-txt-com-java/23221http://www.devmedia.com.br/criando-e-gravando-dados-em-txt-com-java/23060http://www.devmedia.com.br/arquivos-e-fluxos-de-dados-revista-easy-java-magazine-12/22859 -
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
3/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 3/20
medida que os programas vo se tornando maiores e mais complexos, possvel
simplificar e melhorar a clareza dividindo o programa em partes menores, chamadas
subprogramas. Um subprograma um nome dado a um trecho de um programa mais
complexo e que, em geral, encerra em si prprio um pedao da soluo de um
problema maior (o programa a que ele est subordinado). A soluo estruturada
orientada a procedimentos, blocos estruturados de cdigos na forma de procedimentos
ou funes, em Java, mtodos a comunicao entre os blocos se faz utilizando
variveis globais (no constitui uma boa prtica de programao) e pela passagem de
dados atravs de parmetros.
Os elementos chaves da programao estruturada foram abordados no artigo
"Introduo Programao Estruturada".
A aplicao Java, apresentada na Listagem 1, mostra uma soluo baseada em menu
para criar e manter uma agenda de contatos usando a classe ArrayList (para a
manipulao dos dados na memria primria) e arquivo texto (na persistncia dosdados) atravs de uma abordagem estruturada.
Listagem 1:Aplicao Java para criar e manter uma agenda de contatos
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class Exemplo {
public static void main(String[] args) throws IOException {
ArrayList agenda = new ArrayList();Scanner ler = new Scanner(System.in);
int opcao;
http://www.devmedia.com.br/introducao-a-programacao-estruturada/24951 -
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
4/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 4/20
importar(agenda);
do {
System.out.printf("**** Menu Principal *****\n");
System.out.printf("[ 1 ] Incluir Contato\n");
System.out.printf("[ 2 ] Excluir Contato\n");
System.out.printf("[ 3 ] Listar Contatos\n");
System.out.printf("[ 4 ] Pesquisar Contato\n");
System.out.printf("[ 0 ] Encerrar o Programa\n");
System.out.printf("\nOpo Desejada: ");
opcao = ler.nextInt();
switch (opcao) {
case 1: incluir(agenda); break;
case 2: excluir(agenda); break;
case 3: listar(agenda); break;
case 4: pesquisar(agenda);
}
System.out.printf("\n\n");
} while (opcao != 0);
exportar(agenda);}
public static void importar(ArrayList agenda) {
try {
FileReader arq = new FileReader("agenda.txt");
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine(); // l a primeira linha
// a varivel "linha" recebe o valor "null" quando o processo
// de repetio atingir o final do arquivo textowhile (linha != null) {
agenda.add(linha);
linha = lerArq.readLine(); // l da segunda at a ltima linha
}
arq.close();
} catch (IOException e) {
System.err.printf("Erro na abertura do arquivo: %s.",
e.getMessage());
}}
public static void exportar(ArrayList agenda)
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
5/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 5/20
throws IOException {
FileWriter arq = new FileWriter("agenda.txt");
PrintWriter gravarArq = new PrintWriter(arq);
int i, n = agenda.size();
for (i=0; i
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
6/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 6/20
int i, n = agenda.size();
for (i=0; i
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
7/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 7/20
Listar Contatos, [ 4 ] Pesquisar Contato e [ 0 ] Encerrar o Programa. Antes de
apresentar o menu, o mtodo "importar" invocado para recuperar os dados
persistidos no arquivo texto "agenda.txt", mostrado na Figura 1. Cada linha do arquivo
texto representa um contato, no formato "nometelefone", que sero lidos e importados
para a memria principal no ArrayList "agenda". Ao escolher a opo "[ 0 ] Encerrar
Programa" desta vez ser executado o mtodo "exportar" para persistir na memria
secundria, arquivo texto "agenda.txt", os dados mantidos no ArrayList "agenda".
Figura 1:Arquivo texto "agenda.txt" com 3 (trs) contatos cadastrados
Descrevendo as rotinas executadas versus opes do menu principal:
[ 1 ] Incluir Contato:chama o mtodo "incluir", solicita ao usurio os dados de um
contato, nome e telefone, e adiciona o novo contato no final da lista atravs do
comando "agenda.add(nome + "" + telefone)".
[ 2 ] Excluir Contato:chama o mtodo "excluir", mostra todos os contatos
cadastrados na lista e obtm o ndice do elemento a ser excludo. Remove o i-simo
elemento da "agenda" com o comando "agenda.remove(i)" verificando a exceo
"IndexOutOfBoundsException" que indica "ndice fora do intervalo vlido, de 0 at
agenda.size()-1".
[ 3 ] Listar Contatos:chama o mtodo "listar", mostra todos os contatos cadastrados
na lista usando o ndice e o mtodo "get" na instruo "agenda.get(i)".
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
8/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 8/20
[ 4 ] Pesquisar Contato:chama o mtodo "pesquisar", solicita ao usurio uma parte
do nome do contato a ser pesquisado. Percorre a lista, usando o ndice, mostrando
todos os contatos que possuem em seu nome a parte informada pelo usurio
(independente de caracteres maisculos e minsculos). Esta verificao realizada
atravs da expresso lgica "agenda.get(i).toUpperCase().indexOf(s) != -1".
Ao executar a aplicao os resultados apresentados na Figura 2 podero ser exibidos.
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
9/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 9/20
Figura 2:Executando as opes do menu principal
LoginBaixe o APP
http://www.devmedia.com.br/app/http://www.devmedia.com.br/ -
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
10/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 10/20
Obrigado e um abrao.
Prof. Omero Francisco Bertol http://www.pb.utfpr.edu.br/omero/
Aplicaes Java (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)
Publicado no Canal Java
por Omero FranciscoExpert em Java e programao Web
Ajude-nos a evoluir: voc gostou do post? (1) (0)
Compartilhe:
Post aqui sua dvida ou comentrio que nossa equipe responder o maisrpido possvel.
Ficou com alguma dvida?
Alice
Qual a classe que precisa ser importada no projeto, para utilizarmos a impresso
de textos no java?
import java.io.PrintText
import java.io.Print
http://www.devmedia.com.br/autor/omero-francisco-bertol/268250http://www.devmedia.com.br/java/http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTMhttp://www.pb.utfpr.edu.br/omero/ -
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
11/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 11/20
import java.io.Writer
import java.io.Text
import java.io.PrintWriter
h 30 dias
[autor]Omero Bertol h 30 dias
Ol Alice. Desculpe, voc gostaria de usar a impressora? O que especificamente
voc gostaria de imprimir?
Adicionar um comentrio...
Yure Santana
Bom dia, observei que existe um erro nesse cdigo, da forma que ele foi escrito os
dados no persistem em um arquivo, no mtodo incluir faltou chamar a o mtodo
exportar e voc tambm no indica aonde o arquivo ser salvo(caminho em disco
), segue o cdigo corrigido.
package agenda.estruturada;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
12/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 12/20
/**
*
* @author Yure
*/
public class AgendaEstruturada {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try{
//Instanciando a classe ArrayList para uso
ArrayListagenda = new ArrayList();
//Instanciando a Classe Scanner
Scanner ler = new Scanner(System.in);
//Opo que ser passada pelo usurio na escolha do men
int opcao;
importar(agenda);//importando os dados
do{
System.out.println("***** Menu Principal *****");
System.out.println("[1] Incluir Contato");
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
13/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 13/20
System.out.println("[2] Excluir Contato");
System.out.println("[3] Listar Contatos");
System.out.println("[4] Pesquisar Contatos");
System.out.println("[0] Encerrar Programa\n");
opcao = ler.nextInt();
switch(opcao){
case 1:incluir(agenda);break;
case 2:excluir(agenda);break;
case 3:listar(agenda);break;
case 4:pesquisar(agenda);break;
}
System.out.println("\n");
}while(opcao!=0);
exportar(agenda);//Exportando os dados
}catch(IOException err){
err.getMessage();
}
}
/**Mtodo que ir importar os dados para Lis
public static void importar(ArrayList
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
14/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 14/20
FileReader arq = new FileReader
BufferedReader lerArq = new Buf
String linha = lerArq.readLine(
// a varivel "linha" recebe o
// de repetio atingir o final
while(linha!=null){
agenda.add(linha);
linha = lerArq.readLine
}
arq.close();
}catch(IOException err){
System.err.printf("Erro na co
}
}
/**Mtodo para buscar os dados da lista*/
public static void exportar(ArrayList
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
15/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 15/20
// TODO Autogenerated catch block
e.printStackTrace();
}
PrintWriter gravarArq = new PrintWriter(arq);
int i;
int n = agenda.size();
for (i = 0; i < n; i++) {
gravarArq.printf(agenda.get(i));
gravarArq.printf("\r\n");
}
gravarArq.close();
}
public static void incluir(ArrayList
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
16/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 16/20
telefone = ler.nextLine();
//Grava os dados no fim da lista
agenda.add(nome + ":" + telefone);
try {
exportar(agenda);
} catch (IOException ex) {
Logger.getLogger(AgendaEstr
}
}
public static void excluir(ArrayList
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
17/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 17/20
// exceo lanada para indicar que
// est fora do intervalo vlido (d
System.out.printf("\nErro: Posi
}
}
public static void listar(ArrayList
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
18/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 18/20
String dados[];
int i, n = agenda.size();
for(i = 0;i
-
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
19/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
http://www.devmedia.com.br/classe-arraylist-e-arquivo-texto-agenda-de-contatos-uma-abordagem-estruturada-em-java/25087 19/20
Mais posts
Artigo
DevOps: Como adequar seu processo de CI a essa nova
cultura
Artigo
Primeiros passos com o WildFly Swarm
Revista
Revista Java Magazine 150
[autor]Omero Bertol h +1 ms
Yure... Perfeito. Obrigado pelas suas contribuies. Abraos.
Edson Pessotti h +1 ms
Oi e isso mesmo.
Para mim que uso Linux colo
Edson Pessotti h +1 ms
Coloquei o path completo /home/eu/arquivo.txt
Tambm o problema da persistncia passa pela rao de que ao sairmos do
metodo a agenda apaga,
a declarao da agenda como static fora dos metodos resolve o problema.
Muito bom o Post o codigo e muito rico em detalhes e solues. parabens...
[autor]Omero Bertol h +1 ms
Ol Edson. Obrigado pelos seus comentrios. Abraos.
Adicionar um comentrio...
http://www.devmedia.com.br/revista-java-magazine-150/34653http://www.devmedia.com.br/primeiros-passos-com-o-wildfly-swarm/34483http://www.devmedia.com.br/devops-como-adequar-seu-processo-de-ci-a-essa-nova-cultura/34484 -
7/25/2019 Classe ArrayList e Arquivo Texto_ Agenda de Contatos - Uma Abordagem Estruturada Em Java
20/20
04/06/2016 Classe ArrayList e Arquivo Texto: Agenda de Contatos - Uma Abordagem Estruturada em Java
Artigo
Introduo ao Java 9: Conhea os novos recursos
Artigo
Como usar o Apache Cassandra em aplicaes Java EE
Parte 2
Listar mais contedo
Publique | Assine | Fale conosco
Hospedagem web por Porta 80 Web Hosting
Seja o primeiro de seus amigos a curtir isso.
DevMedia106 mil curtidasCurtir Pgina
https://www.facebook.com/DevmediaWeb03/https://www.facebook.com/DevmediaWeb03/https://www.facebook.com/DevmediaWeb03/https://www.facebook.com/raelson.ronehttps://www.facebook.com/edsonmiguel.edsonmarahttps://www.facebook.com/skinapi.caremuahttps://www.facebook.com/wsartscomhttps://www.facebook.com/pauloderossimbunga.derossihttps://www.facebook.com/domigosvit.mingosandahttps://www.facebook.com/guess.avexhttps://www.facebook.com/tiiago.siiilvahttps://www.facebook.com/gildo.quimuenguehttps://www.facebook.com/irene.barros.12https://www.facebook.com/people/Anthony-Frank/100005685304954https://www.facebook.com/jonathan.topanottihttps://www.facebook.com/lucajane.lucajanehttp://www.porta80.com.br/http://www.devmedia.com.br/fale-conosco/http://www.devmedia.com.br/mvp/http://www.devmedia.com.br/seja-um-autor-devmedia/28103http://www.devmedia.com.br/feed/https://plus.google.com/101753743720604160232?prsrc=3http://twitter.com/devmediahttp://www.facebook.com/pages/DevMedia/144522665592650http://www.devmedia.com.br/javahttp://www.devmedia.com.br/como-usar-o-apache-cassandra-em-aplicacoes-java-ee-parte-2/34479http://www.devmedia.com.br/introducao-ao-java-9-conheca-os-novos-recursos/34481