segue o código (modificado) da agenda eletrônica que fiz até agora. Já fiz as rotinas de incluir, listar e sair. Só não sei como fazer a rotina de consulta, vocês poderiam me ajudar?
segue o código
importjava.io.*;importjava.util.Hashtable;publicclassAgenda{publicstaticvoidmain(String[]args){try{Hashtablename=newHashtable();booleanl=true;inttimer=0;intopcao=0;Stringpalavra;do{System.out.println("Escolha uma opcao abaixo:");System.out.println("\n");System.out.println("1 - Incluir");System.out.println("2 - Alterar");System.out.println("3 - Excluir");System.out.println("4 - Consultar");System.out.println("5 - Listar");System.out.println("6 - Gravar");System.out.println("7 - Sair");try{BufferedReadercoisa=newBufferedReader(newInputStreamReader(System.in));palavra=coisa.readLine();opcao=Integer.parseInt(palavra);}catch(Exceptione){System.out.println("opcao invalida");}System.out.println("\n");switch(opcao){case1:try{System.out.println("Digite um nome para ser cadastrado:");BufferedReadercaptura=newBufferedReader(newInputStreamReader(System.in));palavra=captura.readLine();name.put(newInteger(timer++),palavra);}catch(Exceptione){System.out.println("opcao invalida");}break;case2:System.out.println("2!!!!!!!!");break;case3:System.out.println("3!!!!!!!!");break;case4:System.out.println("4!!!!!!!!");break;case5:try{for(inti=0;i<=name.size()-1;i++){System.out.println("Posicao: "+i+" "+(String)name.get(newInteger(i))+"\n");}}catch(Exceptione){System.out.println("erro bizarro");}break;case6:System.out.println("6!!!!!!!!");break;case7:l=false;break;default:System.out.println("Opcao Invalida");}}while(l);}catch(Exceptione){e.printStackTrace();}}/*publicHashtableadnome(Stringword){Hashtablename=newHashtable();name.put(newInteger(timer++),word);returnname;}}
eu nao conheço essa classe Hashtable, quando fiz um exemplo de agenda fiz em pasca e usando um vetor, em java usaria um vetor de String, q conteria os dados
nao sei se vai ajuda em alguma coisa mas se quiser tentar montar um array de string, esse metodo retorna em qual posição do vetor esta a palavra procurada;
Vou montar uma agenda usando Vetor de String, dai posto aki o codigo… eh q agora ta meio tarde pra eu faze mas amanha eu coloko aki…
Espero qtenha surgido alguma luz ae… falowz!!!
R
Raphael
já consegui uma ajuda com a opção consultar, valeu!!!
A
akumaldo
Raphael:
vou explicar melhor o que eu fiz:
vou explicar o que eu fiz até agora: Na opção incluir, os nomes são armazenados numa Hashtable, que gera automaticamente uma posição conforme o nome for adicionado. por exemplo: digito o nome “Raphael”. depois vou na opção listar nomes,aí aparece: 00 - Raphael. O que eu quero fazer é que o usuário digite para consulta a posição que o nome se encontra. Caso o nome esteja cadastrado, tem que exibir na tela a posição e o nome. Se não estiver cadastrado, tem que aparecer uma mensagem “nome inexistente”.
Pera…agora ficou uma dúvida no ar!
O código de inserção de cada user da agenda é adicionado automáticamente? por exemplo 00- para o primeiro, 01 para o segundo?
Se for assim, você pode criar um count que marca quantos usuários tem na agenda, fazer um laço for, e fazer um search na hashtable, dá uma olhadinha que ela tem métodos para isso! ou mesmo o método contains que o amigo citou aqui em cima…vai servir para você!!!
cria um método que retorna uma string com o nome e indice encontrados, ou a palavra não encontrado…ou retorne só o valor int do indice aonde foi encontrado o valor da pesquisa…
espero ter ajudado…
R
Raphael
já consegui uma ajuda com a opção consultar, valeu…
akumaldo, se quiser compilar o programa para entender melhor o que foi feito, aqui vai:
importjava.io.*;importjava.util.Hashtable;publicclassAgenda{publicstaticvoidmain(String[]args){try{Hashtablename=newHashtable();booleanl=true;inttimer=0;intopcao=0;Stringpalavra;System.out.println("Trabalho do dia 10/07/2006");System.out.println("");do{System.out.println("Escolha uma opcao abaixo:");System.out.println("\n");System.out.println("1 - Incluir");System.out.println("2 - Alterar");System.out.println("3 - Excluir");System.out.println("4 - Consultar");System.out.println("5 - Listar");System.out.println("6 - Gravar");System.out.println("7 - Sair");try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));palavra=br.readLine();opcao=Integer.parseInt(palavra);}catch(Exceptione){System.out.println("opcao invalida");}System.out.println("\n");switch(opcao){case1:try{System.out.println("Digite um nome para ser cadastrado:");BufferedReadercaptura=newBufferedReader(newInputStreamReader(System.in));palavra=captura.readLine();name.put(newInteger(timer++),palavra);}catch(Exceptione){System.out.println("opcao invalida");}break;case2:System.out.println("2!!!!!!!!");break;case3:case4:System.out.println("Digite a posição:");BufferedReadercaptura=newBufferedReader(newInputStreamReader(System.in));Stringposicao=captura.readLine();System.out.println("Posicao: "+posicao+name.get(newInteger(posicao)));break;case5:try{for(inti=0;i<=name.size()-1;i++){System.out.println("Posicao: "+i+" "+(String)name.get(newInteger(i))+"\n");}}catch(Exceptione){System.out.println("dado nao cadastrado na agenda");}break;case6:System.out.println("6!!!!!!!!");break;case7:l=false;break;default:System.out.println("Opcao Invalida");}}while(l);}catch(Exceptione){e.printStackTrace();}}/* public Hashtable adnome(String word) { Hashtable name = new Hashtable(); name.put(new Integer(timer++), word); return name; }*/}
A
akumaldo
Sim…se for para digitar a posição o código já está resolvido!
então era bem mais simples! por que não falou antes??? ahahahah
R
Raphael
as opções excluir e alterar também funcionam dessa forma, sendo que na opção excluir, o nome e a posição são deletados. na alterar, somente o nome tem que ser modificado.
T
travis182
aee… blz entao… oh… eufiz uma agenda com vetor de classe
o codigo nao ta moldado muito bem com os conceitos de java mas da para entender o esqueleto do codigo…
e tb nao tratei as Exceptions pq ainda nao sei trabalhar com isso… heheh
vai o codigo da agenda abaixo!!!
importjava.util.Scanner;classPessoa{Stringnome,endereco;voidsetCadastrarPessoa(){Scanners=newScanner(System.in);System.out.println("Digite o nome ");this.nome=s.next();System.out.println("Digite o endereco ");this.endereco=s.next();}voidsetNome(){}voidsetEndereco(){//pega do teclado e adiciona o endereco na variavel;}//void setTelefone;//void setIdade;}classCadastro{privatePessoa[]cadastrados;privateintcont=0;privateintopcao=0;Cadastro(){cadastrados=newPessoa[10];}voidadiciona(Pessoaa){if(this.cont<10){this.cadastrados[cont]=newPessoa();this.cadastrados[cont].endereco=a.endereco;this.cadastrados[cont].nome=a.nome;this.cont+=1;}else{System.out.println("Nao eh possivel adicionar - agenda lotada");}}intsetOpcao(){Scanners=newScanner(System.in);returns.nextInt();}voidlistar(){for(inti=0;i<this.cont;i++){System.out.println("Nome : "+this.cadastrados[i].nome);System.out.println("Endereco: "+this.cadastrados[i].endereco);}}intbuscaNome(Stringbusca){Stringnome;intposicao=10;for(inti=0;i<this.cont;i++){if(this.cadastrados[i].nome.contains(busca)){posicao=i;}}returnposicao;}StringgetNomeParaBuscar(){Scanners=newScanner(System.in);System.out.println("Digite o nome para procurar ");returns.next();}publicstaticvoidmain(String[]args){intopcao;Stringpalavra;booleanl=true;Cadastrocadastro=newCadastro();Pessoaagenda=newPessoa();do{System.out.println("Escolha uma opcao abaixo:");System.out.println("\n");System.out.println("1 - Incluir");System.out.println("2 - Alterar");System.out.println("3 - Excluir");System.out.println("4 - Consultar");System.out.println("5 - Listar");System.out.println("6 - Gravar");System.out.println("7 - Sair");System.out.println("\nDigite a opcao ");System.out.println("\n");switch(cadastro.setOpcao()){case1:if(cadastro.cont<10){agenda.setCadastrarPessoa();cadastro.adiciona(agenda);}else{System.out.println("Agenda lotada");}break;case2:System.out.println("2!!!!!!!!");break;case3:System.out.println("3!!!!!!!!");break;case4:System.out.println("4!!!!!!!!\n");intposi=cadastro.buscaNome(cadastro.getNomeParaBuscar());System.out.println();if(posi<10){System.out.println("Nome : "+cadastro.cadastrados[posi].nome);System.out.println("Endereco : "+cadastro.cadastrados[posi].endereco);}else{System.out.println("nome nao encontrado");}break;case5:cadastro.listar();/*try { for (int i = 0; i <= name.size()-1; i++) { System.out.println("Posicao: "+i+" " + (String)name.get(new Integer(i))+"\n"); } }catch(Exception e) { System.out.println("erro bizarro"); }*/break;case6:System.out.println("6!!!!!!!!");break;case7:l=false;break;default:System.out.println("Opcao Invalida");}}while(l);}}
R
Raphael
prezados, agora não estou conseguindo fazer a opção alterar nomes, que tem que pedir ao usuário o código em que o nome se encontra e depois pra digitar o novo nome, sem alterar a posição.
onde “a” eh o local onde esta guardando os dados e “posicao” a posicao a alterar.
acho q vai servir pra pensa umpokim… hehehe… falowz!! :!:
class GuardaDados
{
}
R
Raphael
ainda não consegui fazer…
T
travis182
Tipo assim…
Voce cria um metodo q recebe como parametro a posicao q o usuario quer alterar, e testa se essa posição existe.
Se essa posição existir dentro desse mesmo metodo voce faz a chamada para o metodo de alteração.
Pedindo para o usuario o novo nome para a posição dai vc faiz a atribuição q fiz no meu exemplo com vetor,
a[posicao].nome = //novo nome q pegou com o usuario
agora como faz com hashtable eu nao sei… blz… mas a ideia eh vc colocar na posição antiga(a posição q vai ser alterada), o novo valor q vc pegou com o usuario, como se fosse uma atribuição quando vc inicializa uma variavel