Ajuda com algorítimo

Bom dia, preciso de uma ajuda para resolver um exercício, sou novo em programação e meu professor me passou a seguinte questão

Faça um algoritmo que leia dez conjuntos de três valores, o primeiro representando o nome do
aluno o segundo representando a sua altura em centímetros e o terceiro representando o sexo M ou
F.

  • Mostre o aluno mais alto da turma, seu nome e altura , independente do sexo;
  • Mostre o aluno mais baixo da turma, seu nome e altura, independente do sexo;
  • Mostre o aluno do sexo masculino mais alto e seu nome;
  • Mostre o aluno do sexo masculino mais baixo e seu nome;
  • Mostre a aluna do sexo feminino mais alta e seu nome;
  • Mostre a aluna do sexo feminino mais baixa e seu nome;

import javax.swing.JOptionPane;

public class prova {

public static void main(String[] args) {
int altura[] = new int [2];
String nome[] = new String [2];
String sexo[] = new String[2];
int maior = 0, menor = 299, maiorM = 0;
int menorM = 299, maiorF = 0, menorF = 299;
String aux;

for (int i = 0; i < 2; i++) {
aux = JOptionPane.showInputDialog("Nome do "+(i+1)+"º Aluno: ");
nome[i] = aux;

aux = JOptionPane.showInputDialog("Altura do "+(i+1)+"º Aluno: ");
altura[i] = Integer.parseInt(aux);

aux = JOptionPane.showInputDialog("Sexo do "+(i+1)+"º Aluno (M/F): ");
sexo[i] = aux;
}
//aluno mais auto
for (int i = 0; i < 2; i++) {
	if(altura[i] > maior) {
		maior = altura[i];
		
	}
}
	
System.out.println("Aluno mais alto é: "+"Com: "+maior);//fim aluno mais alto

//aluno mais baixo
for (int i = 0; i < 2; i++) {
	if(altura[i] < menor) {
		menor = altura[i];
		
	}
}
	
System.out.println("Aluno mais Baixo é: "+"Com: "+menor);//fim aluno mais baixo

}}

Dá pra deixar seu código mais organizado, veja:

import javax.swing.JOptionPane;

public class Exemplo {

    private class Aluno {

        int altura;
        String nome;
        char sexo;
    }

    public static void main(String[] args) throws Exception {
        Exemplo programa = new Exemplo();
        programa.executar();
    }

    public void executar() {
        Aluno[] alunos = cadastrar();
        Aluno[] meninos = filtrarPorSexo(alunos, 'M');
        Aluno[] meninas = filtrarPorSexo(alunos, 'F');

        Aluno alunoMaisAlto = maiorAltura(alunos);
        Aluno alunoMaisBaixo = menorAltura(alunos);
        Aluno meninoMaisAlto = maiorAltura(meninos);
        Aluno meninoMaisBaixo = menorAltura(meninos);
        Aluno meninaMaisAlta = maiorAltura(meninas);
        Aluno meninaMaisBaixa = menorAltura(meninas);

        mostrar("Aluno mais baixo é ", alunoMaisAlto);
        mostrar("Aluno mais baixo é ", alunoMaisBaixo);
        mostrar("Menino mais alto é ", meninoMaisAlto);
        mostrar("Menino mais baixo é ", meninoMaisBaixo);
        mostrar("Menina mais alta é ", meninaMaisAlta);
        mostrar("Menina mais baixa é ", meninaMaisBaixa);
    }

    private Aluno[] cadastrar() {
        int quantidade = Integer.parseInt(JOptionPane.showInputDialog("Quantos alunos deseja cadastrar? "));
        Aluno[] alunos = new Aluno[quantidade];
        for (int i = 0; i < quantidade; i++) {
            Aluno aluno = new Aluno();
            aluno.nome = JOptionPane.showInputDialog("Nome do " + (i + 1) + "º Aluno: ");
            aluno.altura = Integer.parseInt(JOptionPane.showInputDialog("Altura do " + (i + 1) + "º Aluno: "));
            aluno.sexo = JOptionPane.showInputDialog("Sexo do " + (i + 1) + "º Aluno (M/F): ").toUpperCase().charAt(0);
            alunos[i] = aluno;
        }
        return alunos;
    }

    private Aluno[] filtrarPorSexo(Aluno[] alunos, char sexo) {
        int quantidade = 0;
        for (Aluno aluno : alunos) {
            if (aluno.sexo == sexo) {
                quantidade++;
            }
        }
        Aluno[] filtrados = new Aluno[quantidade];
        int posicao = 0;
        for (Aluno aluno : alunos) {
            if (aluno.sexo == sexo) {
                filtrados[posicao] = aluno;
                posicao++;
            }
        }
        return filtrados;
    }

    private Aluno maiorAltura(Aluno[] alunos) {
        Aluno aluno = alunos[0];
        for (int i = 1; i < alunos.length; i++) {
            if (alunos[i].altura > aluno.altura) {
                aluno = alunos[i];
            }
        }
        return aluno;
    }

    private Aluno menorAltura(Aluno[] alunos) {
        Aluno aluno = alunos[0];
        for (int i = 1; i < alunos.length; i++) {
            if (alunos[i].altura < aluno.altura) {
                aluno = alunos[i];
            }
        }
        return aluno;
    }

    private void mostrar(String mensagem, Aluno aluno) {
        JOptionPane.showMessageDialog(null, mensagem + aluno.nome + " com " + aluno.altura + "cm");
    }
}

vlw amigo pela ajuda

esta com erro

Eu dei uma olhada aqui e o código do nosso amigo @staroski está perfeito, porém ele não previu o erro de BIOS (quem é da área sabe)…kkkkkkkkkk…provavelmente estavam digitando a altura com vírgula e o número solicitado é um inteiro, eu dei uma modificada no código para a maneira q eu gosto e mudei a altura para float, prevendo que o cidadão possa acabar digitando a vírgula.

Bom aprendizado para vocês:

{

public class Exemplo {

private List<Aluno> alunos;

private class Aluno implements Serializable {

    private static final long serialVersionUID = 6932658991816229114L;
    private float altura;
    private String nome;
    private char sexo;

    public Aluno() {
    }

    public float getAltura() {
        return altura;
    }

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

    public String getNome() {
        return nome;
    }

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

    public char getSexo() {
        return sexo;
    }

    public void setSexo(char sexo) {
        this.sexo = sexo;
    }

}

public static void main(String[] args) throws Exception {
    Exemplo programa = new Exemplo();
    programa.executar();
}

public Exemplo() {
    this.alunos = new ArrayList();
}

public void executar() {
    cadastrar();
    List<Aluno> meninos = filtrarPorSexo('M');
    List<Aluno> meninas = filtrarPorSexo('F');

    Aluno alunoMaisAlto = maiorAltura(alunos);
    Aluno alunoMaisBaixo = menorAltura(alunos);
    Aluno meninoMaisAlto = maiorAltura(meninos);
    Aluno meninoMaisBaixo = menorAltura(meninos);
    Aluno meninaMaisAlta = maiorAltura(meninas);
    Aluno meninaMaisBaixa = menorAltura(meninas);

    mostrar("Aluno mais alto é ", alunoMaisAlto);
    mostrar("Aluno mais baixo é ", alunoMaisBaixo);
    mostrar("Menino mais alto é ", meninoMaisAlto);
    mostrar("Menino mais baixo é ", meninoMaisBaixo);
    mostrar("Menina mais alta é ", meninaMaisAlta);
    mostrar("Menina mais baixa é ", meninaMaisBaixa);
}

private List<Aluno> cadastrar() {
    int quantidade = Integer.parseInt(JOptionPane.showInputDialog("Quantos alunos deseja cadastrar? "));
    for (int i = 0; i < quantidade; i++) {
        Aluno aluno = new Aluno();
        aluno.nome = JOptionPane.showInputDialog("Nome do " + (i + 1) + "º Aluno: ");
        String alt = JOptionPane.showInputDialog("Altura do " + (i + 1) + "º Aluno: ");
        aluno.altura = Float.parseFloat(alt.replaceAll(",", "."));
        aluno.sexo = JOptionPane.showInputDialog("Sexo do " + (i + 1) + "º Aluno (M/F): ").toUpperCase().charAt(0);
        alunos.add(aluno);
    }
    return alunos;
}

private List<Aluno> filtrarPorSexo(char sexo) {
    return alunos.stream().filter(al -> Chars.compare(al.getSexo(), sexo) == 0).collect(Collectors.toList());
}

private Aluno maiorAltura(List<Aluno> alunos) {
    return alunos.stream().sorted(Comparator.comparing(Aluno::getAltura).reversed()).findFirst().get();
}

private Aluno menorAltura(List<Aluno> alunos) {
    return alunos.stream().sorted(Comparator.comparing(Aluno::getAltura)).findFirst().get();
}

private void mostrar(String mensagem, Aluno aluno) {
    JOptionPane.showMessageDialog(null, mensagem + aluno.getNome() + " com " + aluno.getAltura() + "cm");
}
}

}