Tentando fazer um cadastro e armazenar em um array

Oi Galera

Estou recem iniciando no Java e estava tentando fazer um simples cadastro e armazenar em um array, o meu código esta assim: tenho uma classe Pessoa e a classe Principal:

Classe Pessoa*******

public class Pessoa {
    
    private String nome;
    private String email;
    private int idade;

    public String getNome() {
        return nome;
    }

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

    public String getEmail() {
        return email;
    }

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

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }
    
    }

**Classe Principal

import javax.swing.JOptionPane;

public class Principal {
    
    public static void main(String[] args) {
        
        String n;
              
        Pessoa pes= new Pessoa();
        
        Pessoa vetor[] = new Pessoa[2]; 
        int conta = 0;
        
        while(conta<2){
        n = JOptionPane.showInputDialog("Entre com o seu nome:");
        vetor[conta].setNome(n);
        n = JOptionPane.showInputDialog("Entre com o seu email:");
        vetor[conta].setEmail(n);
        n = JOptionPane.showInputDialog("Entre com a sua idade:");
        vetor[conta].setIdade(Integer.parseInt(n));
        conta++;
        }
        
    }
    
}

Quando mando executar o emu programa ocorre o seguinte erro:

run-single:
Exception in thread “main” java.lang.NullPointerException
at cadastro.Principal.main(Principal.java:19)
Java Result: 1

Alguém poderia me dar um help para realizar este programainha básico???

VAleu :wink:

cintiars,

O problema esta na sua classe Principal. O objetivo é armazenar objetos do tipo pessoa dentro do array.
Então em vez de vetor[conta].setNome(n); vetor[conta].setEmail(n); vetor[conta].setIdade(Integer.parseInt(n));

você deve preencher seu objeto ficando dessa formapes.setNome(n); pes.setemail(n); pes.setIdade(Integer.parseInt(n));

Após preencher o seu objeto é que você aramazena no array dessa forma:vetor[conta] = pes; conta++;

Valeu

Funcionou, mas não dá forma que eu queria… eu cadastrei duas pessoas e ele grava somente a última pessoa…??? Daí eu mando listar o vetor dessa forma:

for(int i=0;i<vetor.length;i++){
            System.out.println("Nome  " + i + ":" + vetor[i].nome);
            System.out.println("Email " + i + ":" + vetor[i].email);
            System.out.println("Idade " + i + ":" + vetor[i].idade);
        }

e ele me lista duas vezes a última pessoa cadastrada???

cintiars

O problema é que você está inicializando o objeto Pessoa fora do while. tenta dessa forma que dá certo:

[code]
Pessoa pes = null;

while( conta < 2 ){

pes = new Pessoa();

//restante da implementação
}[/code]

Dessa forma você está criando um novo objeto do tipo pessoa toda vez que o while fizer o loop :grin:

Valeu!!! Agora funcionou!!!

Muito Obrigada!!! :grin: :razz: