Cara, espero que te ajude:
public class MediaTurma {
public static void main(String[] args) {
List<Double> vetMul = new ArrayList<Double>();
List<Double> vetHom = new ArrayList<Double>();
List<Double> turma = new ArrayList<Double>();
int i = 0;
while(i < 4){
String sexo = JOptionPane.showInputDialog("Sexo da Pessoa: ");
Double altura = Double.parseDouble(JOptionPane.showInputDialog("Altura da Pessoa: "));
if(sexo.equals("M")){
vetHom.add(altura);
} else {
vetMul.add(altura);
}
i++;
}
double medHom = 0.0;
double medMul = 0.0;
for(Double med : vetHom){
medHom += med;
}
for(Double med : vetMul){
medMul += med;
}
turma.addAll(vetHom);
turma.addAll(vetMul);
Collections.sort(turma);
JOptionPane.showMessageDialog(null, "Menor Altura: " + turma.get(0));
JOptionPane.showMessageDialog(null, "Maior Altura: " + turma.get(turma.size()-1));
JOptionPane.showMessageDialog(null, "Média Alty. Mulheres: " + (medMul/vetMul.size()));
JOptionPane.showMessageDialog(null, "Média Alty. Homens: " + (medHom/vetHom.size()));
}
}
Melhore esse código aí... nem testei pra saber se funciona, mas você pode testar aí e vê se te serve... Da próxima vez, poste seu código dentro da Tag CODE, pra ficar assim como lhe enviei...
Deve ter outras formas mais elegantes de pegar a média da turma, mas confesso que pensando rápido aqui, foi o que saiu... Desculpa se tiver algum erro na sintaxe, não deu pra testar mesmo...
O outro exercício, te esforça pra fazer que nem se esforçou nesse... qualquer dúvida no código pergunta aí que a galera vai saber te responder...
Abs []
[EDIT] - foi mal, esqueci um 0 ali no while... é 40, não 4...