Tamanho do vetor definido pelo usuario

Ola, preciso criar um vetor que receba os nomes dos alunos atraves do Scanner, mas surge um erro quando eu faco isso, ele ja imprime //(System.out.printf("Nome do%2do. aluno de %d: ", (i+1), numAlunos); // 2x automaticamente, e a entrada de dados comeca só no 3o nome.
Se eu em vez de // int numAlunos = ler.nextInt() // faço // (int numAlunos = 5;) //, o programa roda normalmente, alguem consegue me ajudar?

obrigado.

Import java.util.Scanner;
public class gestaoAcademica {

public static void main(String[] args) {

	Scanner ler = new Scanner(System.in);
	
	System.out.println("Informe o número de alunos da Turma: ");
	
	int numAlunos = ler.nextInt();
	
    String nomes[] = new String[numAlunos]; 
    

    for (int i=0; i<numAlunos; i++) {
      System.out.printf("Nome do%2do. aluno de %d: ", (i+1), numAlunos);
      nomes[i] = ler.nextLine();
    }
    
    for (int j=0; j<numAlunos; j++) {
    	System.out.println(nomes[j]);
    }
   
}

}

É aconselhável a somente usar o método nextLine() da classe Scanner, porquê é o único que suporta a quebra de linha, se quiser saber mais o usuário staroski falou sobre isso:

Para consertar você pode faze isso:

int numAlunos = Integer.parseInt(ler.nextLine());
1 curtida

Nossa obrigado, deu certo, sou iniciante ainda, e realmente ainda nao vi essa parte de Integer.parseInt, eu conseguiria usar esse metodo para double e String tbm? @SkyG0D

No tipo double sim mas de uma forma um pouco diferente, já na classe String não, mas existe algo semelhante que você pode fazer para transformar qualquer objeto em uma String, que seria usar o método toString(), logo você deve aprender sobre.

Se quiser pode dar uma lida nesse post, ele explica o que são as classes Wrappers, isso ira te auxiliar bastante.

int numAlunos = ler.nextInt();
String nomes[] = new String[numAlunos];
ler.nextLine(); // adicionando essa linha eu consegui resolver o problema tbm.