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
import java.io.*;
import java.util.Hashtable;
public class Agenda
{
public static void main(String []args)
{
try
{
Hashtable name = new Hashtable();
boolean l = true;
int timer = 0;
int opcao = 0;
String palavra;
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
{
BufferedReader coisa = new BufferedReader(new InputStreamReader(System.in));
palavra = coisa.readLine();
opcao = Integer.parseInt(palavra);
}
catch(Exception e)
{
System.out.println("opcao invalida");
}
System.out.println("\n");
switch (opcao)
{
case 1:
try
{
System.out.println("Digite um nome para ser cadastrado:");
BufferedReader captura = new BufferedReader(new InputStreamReader(System.in));
palavra = captura.readLine();
name.put(new Integer(timer++), palavra);
}
catch(Exception e)
{
System.out.println("opcao invalida");
}
break;
case 2:
System.out.println("2!!!!!!!!");
break;
case 3:
System.out.println("3!!!!!!!!");
break;
case 4:
System.out.println("4!!!!!!!!");
break;
case 5:
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;
case 6:
System.out.println("6!!!!!!!!");
break;
case 7:
l = false;
break;
default: System.out.println("Opcao Invalida");
}
}while(l);
}
catch(Exception e)
{
e.printStackTrace();
}
}/*
public Hashtable adnome(String word)
{
Hashtable name = new Hashtable();
name.put(new Integer(timer++), word);
return name;
}
}
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
[Esse eh um exemplo meu de busca]
//eh passado a string a ser buscada
int buscaNome(String n)
{
String nome;
for (int i=0; i < cadastrados.length; i++)
{
// cadastrados[i] eh o vetor de Strings q estao os dados da agenda
//nome = cadastrados[i].nome isso passa o nome q esta na posicao co contador
nome = cadastrados[i].nome;
//aqui testa se a variavel nome contem a frase procurada
// contains() eh um metodo da classe estring q procura a string passada como parametro na string de busca
if (nome.contains(n))
{
//se a string estiver dentro eh retornado a posiçao do vetor
return i;
}
}
return null; //ou algum numero q se saiba q nao existe no vetor
}
}
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…
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”.[/quote]
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…
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.
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!!!
import java.util.Scanner;
class Pessoa
{
String nome, endereco;
void setCadastrarPessoa()
{
Scanner s = new Scanner(System.in);
System.out.println("Digite o nome ");
this.nome = s.next();
System.out.println("Digite o endereco ");
this.endereco = s.next();
}
void setNome()
{
}
void setEndereco()
{
//pega do teclado e adiciona o endereco na variavel;
}
//void setTelefone;
//void setIdade;
}
class Cadastro
{
private Pessoa[] cadastrados;
private int cont = 0;
private int opcao = 0;
Cadastro()
{
cadastrados = new Pessoa[10];
}
void adiciona(Pessoa a)
{
if (this.cont < 10)
{
this.cadastrados[cont] = new Pessoa();
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");
}
}
int setOpcao()
{
Scanner s = new Scanner(System.in);
return s.nextInt();
}
void listar()
{
for (int i = 0; i < this.cont; i++)
{
System.out.println("Nome : " + this.cadastrados[i].nome);
System.out.println("Endereco: " + this.cadastrados[i].endereco);
}
}
int buscaNome(String busca)
{
String nome;
int posicao = 10;
for (int i=0; i < this.cont; i++)
{
if (this.cadastrados[i].nome.contains(busca))
{
posicao = i;
}
}
return posicao;
}
String getNomeParaBuscar()
{
Scanner s = new Scanner(System.in);
System.out.println("Digite o nome para procurar ");
return s.next();
}
public static void main(String[] args)
{
int opcao;
String palavra;
boolean l = true;
Cadastro cadastro = new Cadastro();
Pessoa agenda = new Pessoa();
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())
{
case 1:
if (cadastro.cont < 10)
{
agenda.setCadastrarPessoa();
cadastro.adiciona(agenda);
}
else
{
System.out.println("Agenda lotada");
}
break;
case 2:
System.out.println("2!!!!!!!!");
break;
case 3:
System.out.println("3!!!!!!!!");
break;
case 4:
System.out.println("4!!!!!!!!\n");
int posi = 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;
case 5:
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;
case 6:
System.out.println("6!!!!!!!!");
break;
case 7:
l = false;
break;
default: System.out.println("Opcao Invalida");
}
}while(l);
}
}
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.
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