Questão que envolve arrays em java

Estou com dúvida em como fazer os métodos estáticos para incluir paciente, imprimir os dados de todos os pacientes e mostrar os dados do paciente de menor idade.

Sou iniciante em java, desde já agradeço!

O que você já tem feito?

Por enquanto meu programa está assim, mas acho q tem algo errado

package pratica05;

public class Paciente {

static Paciente p;
private String codigo, nome;
private int idade;
private double altura;
private static int numPaciente;

public Paciente () {
    numPaciente++;
}

public String getCodigo() {
    return codigo;
}

public void setCodigo(String codigo) {
    this.codigo = codigo;
}

public String getNome() {
    return nome;
}

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

public int getIdade() {
    return idade;
}

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

public double getAltura() {
    return altura;
}

public void setAltura(double altura) {
    this.altura = altura;
}

public static int getNumPaciente() {
    return numPaciente;
}

public static void setNumPaciente(int numPaciente) {
    Paciente.numPaciente = numPaciente;
}

}

package pratica05;
import java.util.Scanner;

public class Pratica05 {

public static void menu (Paciente[] p) {
    int opcao;
    Scanner ler = new Scanner (System.in);        
    do {
        System.out.println("1 - Incluir paciente");
        System.out.println("2 - Listar dados dos clientes");
        System.out.println("3 - Exibir dados do cliente com menor idade");
        System.out.println("0 - Sair");
        
        opcao = ler.nextInt();

        
        switch (opcao) {
            case 1: incluir(p);
            break;
            case 2: imprimir(p);
            break;
            case 3: relatorio(p);
            break;
            case 0:
            break;
            default: System.out.println("Opção inválida!");
            break;
        }
    } while (opcao != 0);
    
    
}

public static void incluir (Paciente[] p) {
    Scanner ler = new Scanner (System.in);
    Paciente[] numPaciente = p;
    for (int i=0; i<numPaciente.length; i++) {
        if (numPaciente[i] == null) {
            numPaciente[i] = Paciente.p;
            Paciente x = new Paciente();
            
            System.out.println("Digite o nome: ");
            x.setNome(ler.nextLine());
            System.out.println("Digite o cógido");
            x.setCodigo(ler.nextLine());
            System.out.println("Digite a idade: ");
            x.setIdade(ler.nextInt());
            System.out.println("Digite a altura: ");
            x.setAltura(ler.nextDouble());
            break;
        }
    }

}

public static void imprimir (Paciente [] p) {
    Paciente[] numPaciente = p;
    for(int i=1; i<numPaciente.length; i++) {
        if (numPaciente[i] != null) {
            System.out.println("Nome: "+numPaciente[i].getNome());
            System.out.println("Código: "+numPaciente[i].getCodigo());
            System.out.println("Idade: "+numPaciente[i].getIdade());
            System.out.println("Altura: "+numPaciente[i].getAltura());
    
        }

    }


}

public static void relatorio (Paciente [] p) {
//mostrar dados menor idade

}


public static void main(String[] args) {
    Scanner ler = new Scanner (System.in);
    Paciente[] p = new Paciente [10];
    

    
    
    menu(p);
    

    
    
}

}