Valores inseridos pelos usuários retornam nulos

Estou começando os estudos com Java no meu curso da Faculdade e estou enfrentando alguns problemas.

O exemplo é sobre repetir um método 10 vezes para capturar do usuário um nome e um telefone, armazenar em uma array e apresentar no final, porém ao seguir o exemplo da faculdade, não funciona. O debugger me mostrou que no momento em que eu retorno o valor de “p”, ele volta como nulo (ou eu não sei o que pode ser).

Vou deixar os códigos abaixo para melhor visualização.

Classe Pessoa.

import javax.swing.JOptionPane;

public class Pessoa {

  /* Encapsulamento das informações */

  private String nome;
  private int telefone;

  /* Métodos getters e setters do atributo nome */

  public String getNome(){
    return nome;
  }

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

  /* Métodos getters e setters do atributo telefone */

  public int getTelefone(){
    return telefone;
  }

  public void setTelefone(int telefone){
    if (telefone >= 1000000) { // <- Faz a validação da quantiadade de números do telefone.
        this.telefone = telefone;
    }
  }
  
  public Pessoa(){}
  public Pessoa(String nome, int telefone){} //Método construtor da classe Pessoa.

  public void apresenta(){
    JOptionPane.showMessageDialog(null, "Olá, meu é " + nome + " e meu número de telefone é: " + telefone + ".");
  }
}

Classe TestaRepete

import javax.swing.JOptionPane;

public class TestaRepete {

    public static Pessoa repetePessoa() {

        Pessoa p = null;

        String nome;
        
        int telefone;

        nome = JOptionPane.showInputDialog("Qual o nome da pessoa? ");        
        telefone = Integer.parseInt(JOptionPane.showInputDialog("Qual o número de telefone? "));

        p = new Pessoa(nome, telefone);
        return p;
    }

    public static void main(String[] args) {
        
        Pessoa[] p;
        p = new Pessoa[2];

        int i;

        for (i = 0; i < 2; i++) {
            p[i] = repetePessoa();
        }

        for (i = 0; i < 2; i++) {
            p[i].apresenta();
        }
    }
}

Os parâmetros passados no construtor da classe Pessoa não estão sendo atribuídos aos atributos da mesma!

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

Neste ponto, você precisará sempre criar uma nova instância, da forma como está você altera sempre a mesma referência!

Pessoa pessoa = new Pessoa(nome, telefone);
return pessoa;

// ou pode simplicar e dar o retorno direto

return new Pessoa(nome, telefone);

Aqui não há qualquer problema. Uma nova instância está a ser criada (com o new). O código que ele tem é equivalente ao teu. A diferença é que ele declara a instância mais acima como null e só cria neste momento, mas funciona igual.
O problema, como já detetaste acima é a não atribuição dos valores no construtor.

Obrigado pela ajuda e esclarecimentos, funcionou normalmente.