opção alterar 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 alterar nomes, 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;
 	}*/
 }

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 primeiramente a posição onde se encontra o nome a ser alterado e depois peça ao usuário digitar um novo nome, sem alterar a posição do mesmo

Inclua o código abaixo no case 4

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;

valeu pelo código de busca. :grin:

tentei fazer a rotina de excluir nome, mas está dando erro… acho que falta alguma coisa nesse código


System.out.println("Digite a posição:"); 
    BufferedReader captura = new BufferedReader(new InputStreamReader(System.in));
    Delete from name = captura.readLine();  
    break;

o que falta nesse código?

muda de

Delete from name = captura.readLine(); 

para

 delete(captura.readLine()); 

levando em consideração que você tem um método


public boolean delete(String nome){
  if(hash.remove(nome) != null){
    return true;
  return false;
}

bom, eu alterei conforme você disse, mas continua dando erro:

 System.out.println("Digite a posição:"); 
                                BufferedReader captura = new BufferedReader(new InputStreamReader(System.in));
                                delete(captura.readLine());
                                break; 

o que tá faltando nesse código? eu não consigo descobrir!!!