Dúvida na condição if

Boa tarde.
Estou fazendo um exercício com vetores que me pede para verificar o atleta masculino mais alto só que acontece um problema na hora de comparar o sexo. E fica com a saída:

Digite o tamanho para o vetor: 4
Digite o nome: djsjf
Digite o sexo (M ou F): m
Digite a idade: 22
Digite o peso: 11
Digite a altura: 10

Digite o nome: dfms
Digite o sexo (M ou F): m
Digite a idade: 22
Digite o peso: 22
Digite a altura: 5

Digite o nome: fkdskdfkjsk
Digite o sexo (M ou F): m
Digite a idade: 22
Digite o peso: 12
Digite a altura: 12

Digite o nome: dfkjkd
Digite o sexo (M ou F): f
Digite a idade: 22
Digite o peso: 12
Digite a altura: 800

O atleta masculino mais alto têm: 800.0

Fiz da seguinte forma: float maisAlto = 0; for (int a = 0; a < tamanho; a++) { if (sexo[a].startsWith("M") || sexo[a].startsWith("m")) { maisAlto = altura[a]; for (int i = a + 1; i < tamanho; i++) { if (altura[i] > maisAlto) { maisAlto = altura[i]; } } } } System.out.println("O atleta masculino mais alto têm: " + maisAlto);No código eu peço para verificar se o valor digitado na posição x começa com M ou m mas como pode ser observado na saída eu digitei f com valor 800 e indicou como mais alto ignorando o startsWith “M”.
Em que parte eu errei?

pq vc varreu as alturas incondicionalmente.
tente assim:

[code]float maisAlto = 0;
for (int a = 0; a < tamanho; a++) {
if (sexo[a].startsWith(“M”) || sexo[a].startsWith(“m”)) {
if (altura[a] > maisAlto) {
maisAlto = altura[a];
}

}  

}
System.out.println("O atleta masculino mais alto têm: " + maisAlto); [/code]

float maisAlto = 0; for (int a = 0; a < tamanho; a++) { if (sexo[a].equals("M") || sexo[a].equals("m")) { maisAlto = altura[a]; for (int i = a + 1; i < tamanho; i++) { if (altura[i] > maisAlto) { maisAlto = altura[i]; } } } } System.out.println("O atleta masculino mais alto têm: " + maisAlto);

mas dentro do seu if você corre o array inteiro denovo em um segundo for, e ali você não pergunta quem é quem, só seta quem for o maior. então ele vai pegar o “f”