Programa para cadastro, erro inesperado ao cadastrar

Olá pessoal. Bom estar entre vocês, mesmo não sabendo quase nada de JAVA… :slight_smile:
Então… Estou fazendo um curso técnico em Informática, e meu professor me pediu para fazer um programa que se resume nisso:
"Programa para cadastro de pessoas.

O primeiro passo será criar a classe ?Pessoa?. Essa classe deve ter 4 atributos: nome, rg, telefone e email. Além disso, essa classe deve ter um método imprimirDados que imprimirá na tela todos os dados da pessoa (nome, rg, telefone e email). Criada a classe ?Pessoa? vamos criar nossa classe principal do sistema de cadastro. Essa classe terá, além do método main, uma lista de pessoas que iniciará vazia. O programa entrará em um laço que exibirá as seguintes opções para o usuário:
1 - para criar uma nova pessoa;
2 - para exibir os nomes de todas as pessoas cadastradas;
3 - para consultar os dados de uma pessoa;
4 - para excluir uma pessoa.
Se o usuário escolher:
A opção 1, o sistema deve instanciar uma nova pessoa, solicitar seus dados atribuindo os valores informados aos respectivos atributos e inserir a nova pessoa à lista de pessoas.
A opção 2, o sistema deve exibir os nomes de todas as pessoas cadastradas.
A opção 3, o sistema deve solicitar o nome da pessoa a ser consultada. Informado o nome, o sistema deve localizar essa pessoa na lista e exibir na tela todos seus dados.
A opção 4, o sistema deve solicitar a digitação do nome da pessoa a ser excluída, localizar essa pessoa e excluí-la da lista de pessoas."

Eis o que fiz:

[quote]package cadastro;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Cadastro {

public static void main(String[] args) {
    ArrayList lista=new ArrayList();
    Pessoa p=new Pessoa();//instanciando o objeto
    Scanner ler=new Scanner(System.in);
    lista.add(ler);
    String recebe = null;
    int opcao;
    int numCadastro=0, proxima = 1, num = 0;
    do{
       
        System.out.println("Digite:");
        System.out.println("   1 - Criar Nova pessoa");
        System.out.println("   2 - Exibir pessoas cadastradas");
        System.out.println("   3 - Consultar dados de uma pessoa");
        System.out.println("   4 - Excluir pessoa");
        System.out.println("   Outro número para encerrar");
        opcao = ler.nextInt();
    
   if (opcao==1){
       System.out.println("Digite um nome: ");
       p.nome=ler.nextLine();
       System.out.println("Informe a Identidade: ");
       p.rg= ler.nextInt(); 
       System.out.println("Informe o telefone: ");
       p.telefone= ler.nextInt();
       System.out.println("Insira o e-mail: ");
       p.email= ler.nextLine();
       System.out.println("---------------------------------------");
       System.out.println("Cadastro criado com Sucesso. Numero: "+numCadastro);
       System.out.printf("---------------------------------------");
       lista.add(p);
       proxima++;
      }  else if (opcao == 2) {
          
         for(int i=0; i<lista.size();i++){
            recebe +="nome: "+lista.get(i)+ "\n";
           }         
           }else if (opcao == 3) {
              Iterator it= lista.iterator();
              while(it.hasNext()){
              p= (Pessoa)it.next();
              System.out.println("Nome: "+p.imprimirDados);
              }
         }else if(opcao==4){
         String nome=("Digite o nome que deseja excluir:");
         lista.remove(p.nome);
         
         } 

}while(opcao >=1 && opcao <=4);

}

private static Pessoa localizarPessoa(ArrayList lista, int numCadastro) {
    throw new UnsupportedOperationException(&quot;Not supported yet.&quot;); //To change body of generated methods, choose Tools | Templates.
}

}[/quote]

Fiz também uma classe "Pessoa":

[quote]package cadastro;

public class Pessoa {
String nome, email;
double rg;
int telefone;
String imprimirDados;

public void imprimirDados(){
System.out.println(&quot;Nome: &quot;+this.nome);
System.out.println(&quot;Identidade: &quot;+this.rg);
System.out.println(&quot;Telefone: &quot;+this.telefone);
System.out.println(&quot;E-mail: &quot;+this.email);

}

}
[/quote]

O problema é que na hora da execução, não consigo passar dos dois primeiros itens pra cadastro, eles estão aparecendo juntos.
Antes eu até consegui e deu um erro, estava até planejando consertar o erro com o try, mas ele nem chega até lá mais.

[color=red]Alguém pode me dar uma luz…e se possivel ver se tem mais algum erro?[/color]

Gerbison.

Use a tag code para postar os códigos.

Para corrigir seu problema, altere o seu código para

		System.out.println("Digite um nome: ");
				p.nome = ler.next();

Vlw Nilson26…

depois de tanto penar consegui resolver o problema…kkkkkkkkk…é que sou novo em programação, então já viu né…kkkkkkkk

Dêem uma olhada aí pessoal pra ver se ficou bom… :slight_smile:

Primeiro a classe Main:

[quote]import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Tarefa2 {
public static void main(String[] args) {
ArrayList pessoas = new ArrayList();
Pessoa p = null;
String nome;
String rg;
String telefone;
String email;
int opcao;
Scanner s = new Scanner(System.in);

    do {
        System.out.println("Digite:");
        System.out.println("   1 - Criar Nova Pessoa");
        System.out.println("   2 - Exibir Todas as Pessoas");
        System.out.println("   3 - Consultar dados de uma Pessoa");
        System.out.println("   4 - Excluir uma Pessoa");
        System.out.println("   outro número para encerrar");
        opcao = s.nextInt();
        //Criar nova Pessoa
        if (opcao == 1) {
                 
            System.out.println("Digite o nome da pessoa");
            nome = s.next();
            System.out.println("Digite o rg da pessoa");
            rg = s.next();
            System.out.println("Digite o telefone da pessoa");
            telefone = s.next();
            System.out.println("Digite o email da pessoa");
            email = s.next();
            pessoas.add(p);
            System.out.println("Pessoa salva com Sucesso. ");
        } else if (opcao == 2) {
            imprimirDados(pessoas);
        } else if (opcao == 3 || opcao == 4) {
            //Para opções  3 e 4 o primeiro passo é localzar a pessoa
            System.out.println("Digite o nome da pessoa desejada");
            nome = s.next();
            p = localizarPessoa(pessoas, nome);
            //Se nao localizou é porque a pessoa não existe
            if (p == null) {
                System.out.println("Pessoa solicitada não existe.\n");
            } else {
                //Se localizou e o usuário quer ver os dados da Pessoa
                if (opcao == 3) {
                    System.out.println("---  DADOS DA PESSOA SOLICITADA --- ");
                    p.imprimirDados();
                    System.out.println("---  FIM DOS DADOS DA PESSOA SOLICITADA --- \n");
                } //Se localizou e o usuário quer excluir pessoa
                else {
                    pessoas.remove(p);
                    System.out.println("Pessoa " + nome + " removida!");
                }
            }
        }
    } while (opcao >= 1 && opcao <= 4);
}

static void imprimirDados(ArrayList<Pessoa> pessoas) {
    Pessoa p;
    System.out.println("--------------------------- LISTA ------------------------");
    Iterator i = pessoas.iterator();
    while (i.hasNext()) {
        p = (Pessoa) i.next();
        p.imprimirDados();
        System.out.println("");                    
    }
    System.out.println("-------------------- FIM DA LISTA ------------------------\n");

}

static Pessoa localizarPessoa(ArrayList<Pessoa> pessoas, String nome) {
    Pessoa p;
    Iterator i = pessoas.iterator();
    while (i.hasNext()) {
        p = (Pessoa) i.next();
        if (p.getNome().equals(nome)) {
            return p;
        }
    }
    return null;
}

}
[/quote]

[size=18]Depois a classe Pessoa[/size]: 8)

[quote]public class Pessoa {

private String nome;
private String rg;
private String telefone;
private String email;

public Pessoa(String nome, String telefone){
this.nome=nome;
this.telefone=telefone;
}

public Pessoa(String nome, String rg, String telefone, String email){
this.nome=nome;
this.rg=rg;
this.telefone=telefone;
this.email=email;
}

void imprimirDados() {
    System.out.println("Nome: " + getNome());
    System.out.println("Telefone: " + getTelefone());
    System.out.println("RG: " + getRg());
    System.out.println("Email: " + getEmail());
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getRg() {
    return rg;
}

public void setRg(String rg) {
    this.rg = rg;
}

public String getTelefone() {
    return telefone;
}

public void setTelefone(String telefone) {
    this.telefone = telefone;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
this.email = email;
}
}

[/quote]

[color=red]Bom testei aqui e deu certo…rsrsrsrs…Agora só mais uma coisa…como eu coloco o tópico como resolvido??[/color] :smiley: :smiley: