Erro de compilação

To fazendo um exercicio da faculdade, mas ta dando um erro bobo na hora de executar. No laço pra preencher o array, o console nao espera pra capturar a entrada para o atributo profissao, ele ja pula direto pra chamada do metodo exibirArray, e ai acabando lançando a excessão nullpointer. eu realmente n consegui localizar oq pode estar ocasionando isso

package aula.poo.arrays;

import java.util.Scanner;

public class Pessoa {

	Scanner entrada = new Scanner(System.in);
	
	private String nome;
	private int idade;
	private String profissao;
	
	public Pessoa() {
		
	}
	
	public Pessoa(String nome, int idade, String profissao) {
		this.nome = nome;
		this.idade = idade;
		this.profissao = profissao;
	}
	
	public String getNome() {
		return this.nome;
	}
	
	public int getIdade() {
		return this.idade;
	}
	
	public String getProfissao() {
		return this.profissao;
	}
	
	public void preencherArray(Pessoa[] p) {
			System.out.println("Nome: ");
			this.nome = entrada.nextLine();
			System.out.println("Idade: ");
			this.idade = entrada.nextInt();
			System.out.println("Profissao: ");
			this.profissao = entrada.nextLine();
	}
	
	public void exibirArray(Pessoa[] p, int i) {
			System.out.println("Nome: "+p[i].getNome());
			System.out.println("Idade: "+p[i].getIdade());
			System.out.println("Profissao: "+p[i].getProfissao());
	}
	
	}

package aula.poo.arrays;

import java.util.Scanner;

public class TestePessoa {

public static void main(String[] args) {
		
	Pessoa [] p = new Pessoa[3];
	for(int i=0;i<p.length;i++) {
		p[i] = new Pessoa();
		p[i].preencherArray(p);
		p[i].exibirArray(p, i);
	}
	
	}

}

Testei aqui e não deu o NullPointer. O problema foi só que ele não deixa colocar a profissão da pessoa.

Pra corrigir altere a seguinte linha:

// this.idade = entrada.nextInt();
this.idade = Integer.parseInt(entrada.nextLine());
1 curtida

sim, n ta dando o nullpointer, pq eu editei o codigo aqui msm dps de criar o topico. Mas pq nao esta funcionando como deveria a leitura do inteiro?

Funcionou certo dps da alteração, mas nunca tinha usado essa classe Integer pra fazer leitura do teclado, vou pesquisar sobre. E outra duvida, o Integer foi usado porque estou trabalhando com um array?

Vc continua usando o nextLine() pra fazer a leitura do teclado, aí vc usa o parseInt pra transformar o texto lido em um número inteiro.

O uso de Integer não tem nada a ver com o uso do seu array. Só usei dele o método responsavél por fazer a conversão de texto pra número mesmo.

mas no caso eu ja estou lendo um numero inteiro, q eh a idade da pessoa, nao entendi direito esse lance de fazer conversao pra inteiro sendo q a informacao q eu to lendo do teclado ja eh um numero inteiro, mas valeu muito pela ajuda.