Agenda Eletrônica

pessoal, tô fazendo uma agenda eletrônica que tenha um menu de opções incluir, alterar e excluir nomes, onde o menu pode ser armazenado num loop infinito que aparesenta as opções a cada escolha da sessão e na opção incluir, os dados devem ser armazenados numa hashtable.

eu fiz da seguinte forma:

import java.io.*; 
import java.util.Hashtable; 
  public class Agenda { 
    public static void main (String args[]) throws IOException{ 
     Agenda x = new Agenda(); 
      BufferedReader ler = new BufferedReader(new InputStreamReader(System.in)); 
      int c; 
      do{ 
        c = x.menu_select(); 
        switch(c){ 
          case 1: x.Cadastrar();
          case 2: x.Alterar();
          case 3: x.Excluir();
          case 4: x.Sair();
            break; 
          case 2: System.exit(0); 
           } 
          }  
         while (c >= 4); 
        } 

        public int menu_select() throws IOException{ 
           BufferedReader ler = new BufferedReader(new InputStreamReader(System.in)); 
           String c; 
           int a; 
           System.out.println("\n 1.Cadastrar"); 
           System.out.println("2.Alterar");
           System.out.println("3.Excluir");
           System.out.println("4.Sair\n");  
           do{ 
            System.out.print(">> Entre com a opção desejada: >> "); 
            c = ler.readLine(); 
            a = Integer.parseInt(c); 
           } 
            while (a < 0 || a >= 4); 
            return a; 
           } 
            public void Cadastrar(String nome, String tel){  
            hash.put(nome, new Agenda(nome,tel)); 
              System.out.println ("Digite o nome: "); 
              System.out.println ("Digite o telefone: ");  
              Hashtable hash = new Hashtable(); 
             } 
}    

está faltando alguma coisa nesse código? se sim, o quê?

Você sabe muito bem o que está faltando. Você só definiu a opção Cadastrar; como está escrito, o seu programa nem compila.

É… Vamos por partes…

Respondendo sua pergunta, sim, está faltando bastante coisa.

Justificando, você tem alguns erros de sintaxe e de lógica também, vamos a eles:

1º - Antes de falar sobre o código, vou comentar algumas convenções que são utilizadas em Java, da uma lida aqui, a respeito de nome de variáveis, classes, métodos, packages, etc. E você irá entender o que eu quero dizer, se não entender posta novamente que a gente te ajuda :wink:

2º - No main você define a uma variável “ler”, inutil, que logo depois, no método menu_select(), você a define novamente e ai sim você a utiliza. Portanto, exterminea dali :wink:

3º - Logo de ínicio, você terá alguns problemas de compilação, segue, primeiro, na sua iteração,

int c;
do ... while (c >= 4);

você não inicializa sua variável c, por mais que você altere ela dentro do loop, ela tem que ser inicializada antes. No seu switch, você define 2 vezes o case 2, outro problema, troque o segundo caso (System.exit(0)) para qualquer outra opção de sua escolha. Ainda no switch, se você não por um break em cada case, assim que ele terminar o case atual, o debaixo irá ser executado também, e assim por diante, se não houver o break como mencionei.

4º - O seu método Cadastrar, recebe duas Strings (nome, tel), e no seu switch / case 1, você o chama, porém não passando nenhum parâmetro para ele, ou você tira os parâmetros do método e faz o usuário digitar o nome e o telefone lá, ou você faz isso antes, e ai sim, você passa os parâmetros corretos para o método. Outra coisa, é que você só define a variável hash (Hashtable), no final do seu método, quando ela deveria ser definida logo no início do método, ou ser uma variável global. Falta também fazer a leitura do nome e do telefone, não basta imprimir a mensagem na tela, Java ainda não faz mágica. :wink:

5º - Você não possui os métodos Alterar(), Excluir() e Sair(), crie-os.

Bem, por enquanto, foi isso que percebi batendo o olho, vou dar uma olhada mais detalhada e qualquer coisa eu posto novamente.

E qualquer dúvida é só gritar :smiley:

FlwZ!

[]'s

[quote=Raphael]pessoal, tô fazendo uma agenda eletrônica que tenha um menu de opções incluir, alterar e excluir nomes, onde o menu pode ser armazenado num loop infinito que aparesenta as opções a cada escolha da sessão e na opção incluir, os dados devem ser armazenados numa hashtable.

eu fiz da seguinte forma:

import java.io.*; 
import java.util.Hashtable; 
  public class Agenda { 
    public static void main (String args[]) throws IOException{ 
     Agenda x = new Agenda(); 
      BufferedReader ler = new BufferedReader(new InputStreamReader(System.in)); 
      int c; 
      do{ 
        c = x.menu_select(); 
        switch(c){ 
          case 1: x.Cadastrar();
          case 2: x.Alterar();
          case 3: x.Excluir();
          case 4: x.Sair();
            break; 
          case 2: System.exit(0); 
           } 
          }  
         while (c >= 4); 
        } 

        public int menu_select() throws IOException{ 
           BufferedReader ler = new BufferedReader(new InputStreamReader(System.in)); 
           String c; 
           int a; 
           System.out.println("\n 1.Cadastrar"); 
           System.out.println("2.Alterar");
           System.out.println("3.Excluir");
           System.out.println("4.Sair\n");  
           do{ 
            System.out.print(">> Entre com a opção desejada: >> "); 
            c = ler.readLine(); 
            a = Integer.parseInt(c); 
           } 
            while (a < 0 || a >= 4); 
            return a; 
           } 
            public void Cadastrar(String nome, String tel){  
            hash.put(nome, new Agenda(nome,tel)); 
              System.out.println ("Digite o nome: "); 
              System.out.println ("Digite o telefone: ");  
              Hashtable hash = new Hashtable(); 
             } 
}    

está faltando alguma coisa nesse código? se sim, o quê?[/quote]

Fora o que os amigos comentaram de estar faltando os metodos, você poderia também fazer o negócio mais orientado a objeto…criando uma classe pessoas, com todas as informações de pessoas que a classe agenda iria ter…então a agenda teria diversas pessoas…não seria uma herança e sim uma composição…acho que melhoraria a sua aplicação… :slight_smile:

amigos, eu comecei a fazer um novo código baseado com o que eu achei na Internet e consegui compilar, só tá dando erro no busca, eu ainda não descobri o quê.

segue o código:

import java.io.*; 
import java.util.StringTokenizer; 

public class abc{ 

     public void Cadastrar()throws IOException{ 

           Biblioteca x = new Biblioteca(); 
           String dados; 
           dados = x.Ler(); 
           String vetor[] = new String[5]; 
           int c = 0; 
           BufferedReader ler = new BufferedReader( new 
                InputStreamReader(System.in)); 

               System.out.println("\nDigite o Nome: "); 
                    vetor[0] = ler.readLine(); 

                    System.out.println("\nDigite o CPF: "); 
                    vetor[1] = ler.readLine(); 
                    
                    System.out.println("\nDigite o Endereço: "); 
                    vetor[2] = ler.readLine(); 
                    
                    System.out.println("\nDigite o Telefone: "); 
                    vetor[3] = ler.readLine(); 
                    
                    System.out.println("\nDigite o Nascimento: "); 
                    vetor[4] = ler.readLine(); 

                    dados += vetor[0] + ";" + vetor[1] + ";" + vetor[2] + ";" + vetor[3] + ";" + vetor[4]; 

   } 

          public static void main (String args[]) throws IOException{ 
           Biblioteca x = new Biblioteca(); 
           BufferedReader ler = new BufferedReader( new InputStreamReader(System.in)); 
           int c; 
           String Nome[]; 

           do{ 
             c = x.menu_select(); 
             switch(c){ 
               case 1: x.Cadastrar(); 
                 break; 
               case 2: x.Listar(); 
                 break; 
          case 3: Nome = x.Buscar(); 
                       System.out.println("Nome: " + Nome[0] + "\nCPF: " + Nome[1] + "\nEndereco: " + Nome[2] + 
                            "\nTelefone: " + Nome[3] + "\nNascimento: " + Nome[4]); 
       break; 
               case 4: System.exit(0); 
             } 
           }while (c != 4); 
        } 


        public int menu_select() throws IOException{ 
           BufferedReader ler = new BufferedReader( new InputStreamReader(System.in)); 
           String c; 
           int a; 

           System.out.println("\n 1. Cadastrar"); 
           System.out.println(" 2. Listar"); 
           System.out.println(" 3. Buscar");
           System.out.println(" 4. Sair\n"); 

           do{ 
            System.out.print("Informe sua escolha: "); 
            c = ler.readLine(); 
            a = Integer.parseInt(c); 
           } while (a < 0 || a > 4); 

           return a; 
           } 


        public void Listar(){ 
           Biblioteca x = new Biblioteca(); 

           String V[] = x.AbrirArquivo(); 

           int c = 0, contador = 0; 
           System.out.println("Nome\tCPF\tEndereço\tCor\tNascimento"); 
           while (c < V.length){ 

            StringTokenizer capturador = new StringTokenizer(V[c],";"); 
            String leitorDados[] = {"","","","",""}; 

            while (capturador.hasMoreTokens()) { 
            leitorDados[contador]= capturador.nextToken(); 
            contador++; 
            } 

             System.out.println(leitorDados[0] + "\t" +  leitorDados[1] + "\t" + leitorDados[2] + "\t\t" + leitorDados[3] +"\t" + leitorDados[4]); 
            c++; 
            contador = 0; 

            } 
          } 
          
          
        public String[] Buscar() throws IOException{ 
           BufferedReader ler = new BufferedReader( new InputStreamReader(System.in)); 
           Biblioteca x = new Biblioteca(); 

           String V[] = x.AbrirArquivo(); 
           String V2[] = new String[5]; 
           String c; 
           int i = 0, contador = 0; 

           System.out.println("Informe o nome para a busca: "); 
           c = ler.readLine(); 

           while (i < V.length){ 

            StringTokenizer capturador = new StringTokenizer(V[i],";"); 
            String leitorDados[] = {"","","","",""}; 

            while (capturador.hasMoreTokens()) { 
            leitorDados[contador]= capturador.nextToken(); 
            contador++; 
            } 
              if( leitorDados[0].equalsIgnoreCase(c)){ 
                V2 = leitorDados; 
                break; 
              } 
            i++; 
            } 
          return V2; 
         } 

        } 

observações:

  • ainda não fiz a opção incluir com hashtable;
  • na verdade, a agenda ainda tem que ter as opções de listar os nomes, pesquisar os nomes e gravar a agenda. ainda não fiz as opções de alterar, sair e gravar, quero testar ela primeiro para fazer as opções faltantes.

valeu… :lol:

você sabe em qual linha tá dando o erro??
tentou usar o debug ???

o que tá acontecendo é que quando eu digito o nome da busca, aparece o seguinte:

Nome: null
CPF: null
Endereço: null
Telefone: null