opção consultar nomes

amigos…

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…

Espero qtenha surgido alguma luz ae… falowz!!!

já consegui uma ajuda com a opção consultar, valeu!!!

[quote=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”.[/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… :slight_smile:

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:

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;
		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
			{
				BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				palavra = br.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:

			case 4:
                                System.out.println("Digite a posição:"); 
                                BufferedReader captura = new BufferedReader(new InputStreamReader(System.in)); 
                                String posicao = captura.readLine(); 
                                System.out.println("Posicao: " + posicao + name.get(new Integer(posicao)));
				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("dado nao cadastrado na agenda");
				}


				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;
	}*/
}

Sim…se for para digitar a posição o código já está resolvido!:slight_smile:
então era bem mais simples!:smiley: por que não falou antes??? ahahahah
:smiley:

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.

cria um metodo assim

void altera(GuardaDados[] a, int posicao)
{
a[posicao].nome = //novo nome q pegou com o usuario
}

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!! :smiley: :!:

class GuardaDados
{

}

ainda não consegui fazer…

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

String nome = “Meu nome”;

:smiley: