Escolar Documentos
Profissional Documentos
Cultura Documentos
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
Buscar
favorito(1)
marcarcomolido
tirardvidas
(1) (0)
CarosAmigos,
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
1/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
AclasseArrayListpermiteacriaoeamanutenodeumacoleooulistaindexada
deobjetos.Comonosvetores,ndicesdeumArrayListsobaseadosemzero,isto,o
ndicedoprimeiroelementozero.Osmtodosfornecidospossibilitamamanipulao
deumelementobaseadanasuaposio(oundice)numricanalista,remover
determinadoelemento,procurarasocorrnciasdeumdadoelementoepercorrer
sequencialmentetodososelementosdalista.
MaisinformaessobreaclasseArrayListnaimplementaodevetoresdinmicos(ou
redimensionveis)podemserobtidasnoartigo"ExplorandoaClasseArrayListnoJava
".
Oscomputadoresutilizamosarquivoscomoestruturasdedadosparaarmazenamento
delongoprazodegrandesvolumesdedados.Dadosmantidosemarquivosso
chamadosdedadospersistentesporqueelesexistemalmdaduraodaexecuo
doprogramaemdispositivosdearmazenamentosecundriocomodisquete,disco
rgido,entreoutros.Emumarquivotextoosdadossoarmazenadoscomouma
sequnciadecaracteresdivididaemlinhasterminadasporumcaracteredefimde
linha.Osarquivosnoformatotextogeralmentesoencontradoscomnomescoma
extensopadroTXT(abreviaodeTEXT,outextoemingls)epodemser
facilmentelidosouabertosporqualquerprogramaqueltextoe,poressarazo,so
consideradosuniversais.
Osarquivostextoforamabordadosemoutros3(trs)artigos:
1.ArquivosefluxosdedadosRevistaEasyJavaMagazine12
2.CriandoeGravandodadosemTxtcomJava
3.LendodadosdeTxtcomJava
Aprogramaoestruturadaumaformadeprogramaodecomputadoresque
estabeleceumadisciplinaousistemticaparaodesenvolvimentodealgoritmos.
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
2/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
medidaqueosprogramasvosetornandomaioresemaiscomplexos,possvel
simplificaremelhoraraclarezadividindooprogramaempartesmenores,chamadas
subprogramas.Umsubprogramaumnomedadoaumtrechodeumprogramamais
complexoeque,emgeral,encerraemsiprprioumpedaodasoluodeum
problemamaior(oprogramaaqueeleestsubordinado).Asoluoestruturada
orientadaaprocedimentos,blocosestruturadosdecdigosnaformadeprocedimentos
oufunes,emJava,mtodosacomunicaoentreosblocossefazutilizando
variveisglobais(noconstituiumaboaprticadeprogramao)epelapassagemde
dadosatravsdeparmetros.
Oselementoschavesdaprogramaoestruturadaforamabordadosnoartigo
"IntroduoProgramaoEstruturada".
AaplicaoJava,apresentadanaListagem1,mostraumasoluobaseadaemmenu
paracriaremanterumaagendadecontatosusandoaclasseArrayList(paraa
manipulaodosdadosnamemriaprimria)earquivotexto(napersistnciados
dados)atravsdeumaabordagemestruturada.
Listagem1:AplicaoJavaparacriaremanterumaagendadecontatos
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassExemplo{
publicstaticvoidmain(String[]args)throwsIOException{
ArrayList<String>agenda=newArrayList();
Scannerler=newScanner(System.in);
intopcao;
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
3/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
importar(agenda);
do{
System.out.printf("****MenuPrincipal*****\n");
System.out.printf("[1]IncluirContato\n");
System.out.printf("[2]ExcluirContato\n");
System.out.printf("[3]ListarContatos\n");
System.out.printf("[4]PesquisarContato\n");
System.out.printf("[0]EncerraroPrograma\n");
System.out.printf("\nOpoDesejada:");
opcao=ler.nextInt();
switch(opcao){
case1:incluir(agenda);break;
case2:excluir(agenda);break;
case3:listar(agenda);break;
case4:pesquisar(agenda);
}
System.out.printf("\n\n");
}while(opcao!=0);
exportar(agenda);
}
publicstaticvoidimportar(ArrayList<String>agenda){
try{
FileReaderarq=newFileReader("agenda.txt");
BufferedReaderlerArq=newBufferedReader(arq);
Stringlinha=lerArq.readLine();//laprimeiralinha
//avarivel"linha"recebeovalor"null"quandooprocesso
//derepetioatingirofinaldoarquivotexto
while(linha!=null){
agenda.add(linha);
linha=lerArq.readLine();//ldasegundaataltimalinha
}
arq.close();
}catch(IOExceptione){
System.err.printf("Erronaaberturadoarquivo:%s.",
e.getMessage());
}
}
publicstaticvoidexportar(ArrayList<String>agenda)
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
4/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
throwsIOException{
FileWriterarq=newFileWriter("agenda.txt");
PrintWritergravarArq=newPrintWriter(arq);
inti,n=agenda.size();
for(i=0;i<n;i++){
gravarArq.printf("%s%n",agenda.get(i));
}
gravarArq.close();
}
publicstaticvoidincluir(ArrayList<String>agenda){
Scannerler=newScanner(System.in);
Stringnome,telefone;
System.out.printf("\nInformeonomedocontato:\n");
nome=ler.nextLine();
System.out.printf("\nInformeotelefonedocontato:\n");
telefone=ler.nextLine();
//gravaosdadosnofinalda"lista"
agenda.add(nome+";"+telefone);
}
publicstaticvoidexcluir(ArrayList<String>agenda){
Scannerler=newScanner(System.in);
inti;
listar(agenda);
System.out.printf("\nInformeaposioaserexcluda:\n");
i=ler.nextInt();
try{
agenda.remove(i);
}catch(IndexOutOfBoundsExceptione){
//exceolanadaparaindicarqueumndice(i)
//estforadointervalovlido(de0atagenda.size()1)
System.out.printf("\nErro:posioinvlida(%s).\n\n",
e.getMessage());
}
}
publicstaticvoidlistar(ArrayList<String>agenda){
System.out.printf("\nListadandoositensdaAgenda:\n");
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
5/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
inti,n=agenda.size();
for(i=0;i<n;i++){
System.out.printf("Posio%d%s\n",i,agenda.get(i));
}
System.out.printf("");
}
publicstaticvoidpesquisar(ArrayList<String>agenda){
Scannerler=newScanner(System.in);
Strings;
System.out.printf("\nInformeonomedocontato:\n");
s=ler.nextLine();
inti,n=agenda.size();
s=s.toUpperCase();
Stringdados[];
for(i=0;i<n;i++){
//informando"joo",porexemplo,naentradaseromostrados
//todososcontatosquepossuem"joo"nonome
if(agenda.get(i).toUpperCase().indexOf(s)!=1){
dados=agenda.get(i).split(";");
System.out.printf("\nNome....:%s",dados[0]);
System.out.printf("\nTelefone:%s\n",dados[1]);
}
}
}
}
Opropsitoprincipaldaaplicaodesenvolvidanesteartigofoiexploraroselementos
chavesdaprogramaoestruturada,emdestaque,adivisodasoluoempartes
chamadasdemtodosemJavaeestabeleceracomuniodestesatravsde
parmetros.Inicialmentefoidefinidaumaestruturadedadosstringusandoaclasse
ArrayListparamanteraagendadecontatosatravsdadeclarao"ArrayListagenda=
newArrayList()".
Omenuprincipaldaaplicao,construdoegerenciadonomtodo"main",apresenta
asseguintesopesparaousuriofinal:[1]IncluirContato,[2]ExcluirContato,[3]
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
6/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
ListarContatos,[4]PesquisarContatoe[0]EncerraroPrograma.Antesde
apresentaromenu,omtodo"importar"invocadopararecuperarosdados
persistidosnoarquivotexto"agenda.txt",mostradonaFigura1.Cadalinhadoarquivo
textorepresentaumcontato,noformato"nometelefone",queserolidoseimportados
paraamemriaprincipalnoArrayList"agenda".Aoescolheraopo"[0]Encerrar
Programa"destavezserexecutadoomtodo"exportar"parapersistirnamemria
secundria,arquivotexto"agenda.txt",osdadosmantidosnoArrayList"agenda".
Figura1:Arquivotexto"agenda.txt"com3(trs)contatoscadastrados
Descrevendoasrotinasexecutadasversusopesdomenuprincipal:
[1]IncluirContato:chamaomtodo"incluir",solicitaaousurioosdadosdeum
contato,nomeetelefone,eadicionaonovocontatonofinaldalistaatravsdo
comando"agenda.add(nome+""+telefone)".
[2]ExcluirContato:chamaomtodo"excluir",mostratodososcontatos
cadastradosnalistaeobtmondicedoelementoaserexcludo.Removeoisimo
elementoda"agenda"comocomando"agenda.remove(i)"verificandoaexceo
"IndexOutOfBoundsException"queindica"ndiceforadointervalovlido,de0at
agenda.size()1".
[3]ListarContatos:chamaomtodo"listar",mostratodososcontatoscadastrados
nalistausandoondiceeomtodo"get"nainstruo"agenda.get(i)".
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
7/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
[4]PesquisarContato:chamaomtodo"pesquisar",solicitaaousurioumaparte
donomedocontatoaserpesquisado.Percorrealista,usandoondice,mostrando
todososcontatosquepossuememseunomeaparteinformadapelousurio
(independentedecaracteresmaisculoseminsculos).Estaverificaorealizada
atravsdaexpressolgica"agenda.get(i).toUpperCase().indexOf(s)!=1".
AoexecutaraaplicaoosresultadosapresentadosnaFigura2poderoserexibidos.
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
8/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
BaixeoAPP
Login
Figura2:Executandoasopesdomenuprincipal
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
9/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
Obrigadoeumabrao.
Prof.OmeroFranciscoBertolhttp://www.pb.utfpr.edu.br/omero/
AplicaesJava(http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)
PublicadonoCanalJava
porOmeroFrancisco
ExpertemJavaeprogramaoWeb
Ajudenosaevoluir:vocgostoudopost?
(1) (0)
Compartilhe:
Ficoucomalgumadvida?
Postaquisuadvidaoucomentrioquenossaequiperesponderomais
rpidopossvel.
Alice
Qualaclassequeprecisaserimportadanoprojeto,parautilizarmosaimpresso
detextosnojava?
importjava.io.PrintText
importjava.io.Print
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
10/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
importjava.io.Writer
importjava.io.Text
importjava.io.PrintWriter
h30dias
[autor]OmeroBertolh30dias
OlAlice.Desculpe,vocgostariadeusaraimpressora?Oqueespecificamente
vocgostariadeimprimir?
Adicionarumcomentrio...
YureSantana
Bomdia,observeiqueexisteumerronessecdigo,daformaqueelefoiescritoos
dadosnopersistememumarquivo,nomtodoincluirfaltouchamaraomtodo
exportarevoctambmnoindicaaondeoarquivosersalvo(caminhoemdisco
),segueocdigocorrigido.
packageagenda.estruturada;
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.ArrayList;
importjava.util.Scanner;
importjava.util.logging.Level;
importjava.util.logging.Logger;
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
11/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
/**
*@authorYure
*/
publicclassAgendaEstruturada{
/**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args){
try{
//InstanciandoaclasseArrayListparauso
ArrayList<String>agenda=newArrayList<String>();
//InstanciandoaClasseScanner
Scannerler=newScanner(System.in);
//Opoqueserpassadapelousurionaescolhadomenu
intopcao;
importar(agenda);//importandoosdados
do{
System.out.println("*****MenuPrincipal*****");
System.out.println("[1]IncluirContato");
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
12/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
System.out.println("[2]ExcluirContato");
System.out.println("[3]ListarContatos");
System.out.println("[4]PesquisarContatos");
System.out.println("[0]EncerrarPrograma\n");
opcao=ler.nextInt();
switch(opcao){
case1:incluir(agenda);break;
case2:excluir(agenda);break;
case3:listar(agenda);break;
case4:pesquisar(agenda);break;
System.out.println("\n");
}while(opcao!=0);
exportar(agenda);//Exportandoosdados
}catch(IOExceptionerr){
err.getMessage();
/**MtodoqueirimportarosdadosparaLista*/
publicstaticvoidimportar(ArrayList<String>agenda){
try{
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
13/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
FileReaderarq=newFileReader("C:\\agenda
BufferedReaderlerArq=newBufferedReader(
Stringlinha=lerArq.readLine();//lapri
//avarivel"linha"recebeovalor"null"
//derepetioatingirofinaldoarquivo
while(linha!=null){
agenda.add(linha);
linha=lerArq.readLine();//lda
arq.close();
}catch(IOExceptionerr){
System.err.printf("Erronacoberturadoa
/**Mtodoparabuscarosdadosdalista*/
publicstaticvoidexportar(ArrayList<String>agenda)th
FileWriterarq=null;
try{
arq=newFileWriter("C:\\agenda.txt");
}catch(IOExceptione){
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
14/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
//TODOAutogeneratedcatchblock
e.printStackTrace();
PrintWritergravarArq=newPrintWriter(arq);
inti;
intn=agenda.size();
for(i=0;i<n;i++){
gravarArq.printf(agenda.get(i));
gravarArq.printf("\r\n");
gravarArq.close();
publicstaticvoidincluir(ArrayList<String>agenda)
Scannerler=newScanner(System.in);
Stringnome,telefone;
System.out.printf("|Informeonomedocontato\n
nome=ler.nextLine();
System.out.printf("|Informeotelefonedoconta
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
15/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
telefone=ler.nextLine();
//Gravaosdadosnofimdalista
agenda.add(nome+":"+telefone);
try{
exportar(agenda);
}catch(IOExceptionex){
Logger.getLogger(AgendaEstruturada.clas
publicstaticvoidexcluir(ArrayList<String>agenda)
Scannerler=newScanner(System.in);
inti;
listar(agenda);
System.out.printf("\nInformeoindicedaposi
i=ler.nextInt();
try{
agenda.remove(i);
}catch(IndexOutOfBoundsExceptionerr){
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
16/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
//exceolanadaparaindicarqueumndice(
//estforadointervalovlido(de0atagen
System.out.printf("\nErro:Posioinvlida
publicstaticvoidlistar(ArrayList<String>agenda){
System.out.printf("\nListandoositensdaagend
inti,n=agenda.size();
for(i=0;i<n;i++){
System.out.printf("Posio%d%s\n",i,agen
System.out.printf("
publicstaticvoidpesquisar(ArrayList<String>agend
Scannerler=newScanner(System.in);
Strings;
System.out.printf("\nInformeonomedocontato\
s=ler.nextLine();
s=s.toUpperCase();
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
17/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
Stringdados[];
inti,n=agenda.size();
for(i=0;i<n;i++){
//informando"joo",porexemplo,nae
//todososcontatosquepossuem"joo"
if(agenda.get(i).toUpperCase().indexOf(
dados=agenda.get(i).split(":");
System.out.printf("\nNome....:%s\n"
System.out.printf("\nTelefone:%s\n"
h+1ms
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
18/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
[autor]OmeroBertolh+1ms
Yure...Perfeito.Obrigadopelassuascontribuies.Abraos.
EdsonPessottih+1ms
Oieissomesmo.
ParamimqueusoLinuxcolo
EdsonPessottih+1ms
Coloqueiopathcompleto/home/eu/arquivo.txt
Tambmoproblemadapersistnciapassapelaraodequeaosairmosdo
metodoaagendaapaga,
adeclaraodaagendacomostaticforadosmetodosresolveoproblema.
MuitobomoPostocodigoemuitoricoemdetalhesesolues.parabens...
[autor]OmeroBertolh+1ms
OlEdson.Obrigadopelosseuscomentrios.Abraos.
Adicionarumcomentrio...
Maisposts
Artigo
19/20
04/06/2016
ClasseArrayListeArquivoTexto:AgendadeContatosUmaAbordagemEstruturadaemJava
Artigo
DevMedia
CurtirPgina
106milcurtidas
Sejaoprimeirodeseusamigosacurtirisso.
HospedagemwebporPorta80WebHosting
http://www.devmedia.com.br/classearraylistearquivotextoagendadecontatosumaabordagemestruturadaemjava/25087
20/20