[RESOLVIDO] InputMismatchException, motivo?

Oi gente, sou iniciante e meu código está retornando esse erro. Gostaria de saber o motivo.

    public class Exercicio24 {

        public static void main(String[] args) {
       
                Scanner scan = new Scanner(System.in);
                int qtdAlunos, qtdH = 0, qtdM = 0;
                int menorAltura = 999, maiorAltura = 0, mediaH = 0, mediaM = 0;
                int contAltura1 = 0, contAltura2 = 0;
                String sexoMaior = " ", sexoMenor = " ";
                
                System.out.print("Quantos alunos: ");
                qtdAlunos = scan.nextInt();
                scan.skip("\n");
                
                dados vetor[] = new dados[qtdAlunos];
                
                for (int i = 0; i < qtdAlunos; i++) {
                    
                        dados aluno = new dados();
                        
                        System.out.print("Sexo(M para Masculino, F para Feminino):  ");
                        aluno.sexo = scan.nextLine();
                        
                        System.out.print("Altura: (em centímetros)");
                        aluno.altura = scan.nextInt();
                        
                        if(aluno.sexo.equalsIgnoreCase("M") == true){
                            
                                qtdH = qtdH + 1;
                                contAltura1 = contAltura1 + aluno.altura;
                        }
                        if(aluno.sexo.equalsIgnoreCase("F") == true){
                            
                                qtdM = qtdM + 1;
                                contAltura2 = contAltura2 + aluno.altura;
                        }
                        if(aluno.altura > maiorAltura){
                            
                                maiorAltura = aluno.altura;
                                sexoMaior = aluno.sexo;
                        }
                        if(aluno.altura < menorAltura){
                            
                                menorAltura = aluno.altura;
                                sexoMenor = aluno.sexo;
                        }
                        
                        vetor[i] = aluno;
                
                }
                
                System.out.print("Maior: "+maiorAltura+" Sexo: "+sexoMaior);
                System.out.println();
                System.out.print("Menor: "+menorAltura+" Sexo: "+sexoMenor);
                System.out.println();
                
                mediaH = contAltura1 / qtdH;
                mediaM = contAltura2 / qtdM;
                
                System.out.print("Média de altura dos homens: "+mediaH);
                System.out.println();
                System.out.print("Média de altura das mulheres: "+mediaM);
                System.out.println();
        }
}

O erro:

Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at exercicio24.Exercicio24.main(Exercicio24.java:29)
Java Result: 1

Troque essa chamada por

scan.nextLine();

Continua dando o mesmo erro

É que o método nextInt() não consome a quebra de linha.
A cada chamada do nextInt() coloque em seguinda uma chamada ao nextLine()
Ou crie um método para ler os números e já consumir a quebra de linha.
Exemplo:

import java.io.PrintStream;
import java.util.Scanner;

public class Exercicio24 {

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

    private final Scanner entrada = new Scanner(System.in);
    private final PrintStream saida = System.out;

    public void executar() {
        int qtdAlunos;
        int qtdH = 0;
        int qtdM = 0;
        int menorAltura = 999;
        int maiorAltura = 0;
        int mediaH = 0;
        int mediaM = 0;
        int contAltura1 = 0;
        int contAltura2 = 0;
        String sexoMaior = "";
        String sexoMenor = "";

        qtdAlunos = lerInteiro("Quantos alunos: ");

        dados[] vetor = new dados[qtdAlunos];

        for (int i = 0; i < qtdAlunos; i++) {
            dados aluno = new dados();
            aluno.sexo = lerTexto("Sexo(M para Masculino, F para Feminino):  ");
            aluno.altura = lerInteiro("Altura: (em centímetros): ");
            if (aluno.sexo.equalsIgnoreCase("M")) {
                qtdH = qtdH + 1;
                contAltura1 = contAltura1 + aluno.altura;
            }
            if (aluno.sexo.equalsIgnoreCase("F")) {
                qtdM = qtdM + 1;
                contAltura2 = contAltura2 + aluno.altura;
            }
            if (aluno.altura > maiorAltura) {

                maiorAltura = aluno.altura;
                sexoMaior = aluno.sexo;
            }
            if (aluno.altura < menorAltura) {

                menorAltura = aluno.altura;
                sexoMenor = aluno.sexo;
            }
            vetor[i] = aluno;
        }

        saida.print("Maior: " + maiorAltura + " Sexo: " + sexoMaior);
        saida.println();
        saida.print("Menor: " + menorAltura + " Sexo: " + sexoMenor);
        saida.println();

        mediaH = contAltura1 / qtdH;
        mediaM = contAltura2 / qtdM;

        saida.print("Média de altura dos homens: " + mediaH);
        saida.println();
        saida.print("Média de altura das mulheres: " + mediaM);
        saida.println();
    }

    private String lerTexto(String mensagem) {
        saida.print(mensagem);
        return entrada.nextLine();
    }

    private int lerInteiro(String mensagem) {
        saida.print(mensagem);
        int numero = entrada.nextInt();
        entrada.nextLine(); // consumir a quebra de linha que não foi consumida pelo nextInt
        return numero;
    }
}
2 curtidas

Vlw pela ajuda!