import java.io.IOException;
import java.util.Scanner;
import java.lang.Math;
public class prova{
public static void main(String[]args) throws IOException {
Scanner teclado = new Scanner(System.in);
char [] prova = new char[5];
char [] gabarito = new char[5];
int resultado;
int alunos;
System.out.println("numero de alunos");
alunos = teclado.nextInt();
for(int i = 0; i< prova.length; i++){
System.out.println("digite a questao numero "+ (i+1) +" do gabarito da prova");
gabarito[i] = teclado.nextLine().charAt(0);
}
for(int j = 0; j< 2; j++){
for(int i = 0; i< prova.length; i++){
System.out.println("digite a questao numero "+ (i+1) +" da prova");
prova[i] = teclado.nextLine().charAt(0);
}
resultado = 0;
for(int i = 0; i< prova.length; i++){
if(gabarito[i] == prova[i]){
resultado++;
}
}
System.out.println("o resultado da prova eh "+ resultado);
}
}
}
aparece a mensagem numero de alunos 2
Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.base/java.lang.StringLatin1.charAt(Unknown Source)
at java.base/java.lang.String.charAt(Unknown Source)
at prova.main(prova.java:24)
fala @victor1996costa, primeiramente bem vindo ao fórum do GUJ, espero que possamos te ajudar durante sua jornada de programação.
Quanto a sua dúvida, eu baixei seu código aqui na máquina e fiz um ajuste apenas para ele executar (na verdade foram 2), ao invés de usar o nextLine(), deixei apenas o next(). Não sei explicar exatamente porque esse comportamento já que nunca usei a classe Scanner para input de dados, mas fico lhe devendo uma pesquisada com calma (pode me cobrar se precisar).
Porém, alguns outros ajustes precisam ser feitos no seu código , o loop fixo do j<2 espero que seja só pra testar, afinal sua variável alunos não está servindo pra nada nesse caso já que se eu colocar 1 ou 50 sempre o loop executará 2 vezes.
No mais, está funcional e creio que esse ajuste já dá pra continuar os estudos… 
Abraços e bons estudos.
[EDIT] - Agora ignore quase tudo o que eu lhe disse anterioemente. Fiquei encucado com essa questão e fui me aprofundar na API do Scanner,a diferença de next pra nextLine é que o primeiro pega a String até encontrar um espaço e o segundo pega a String completa, voltei para o nextLine e seu código executou, então entendi um detalhe que eu alterei que fez funcionar. Anteriormente, como vi que seu alunos não estava sendo utilizado pra nada, eu limpei seu código retirando o teclado.nextInt() e isso deixou o seu teclado limpo pra receber as questões da prova e do gabarito. então pra funcionar na verdade, apenas para seus testes, antes de entrar no loop for() crie uma nova instância de Scanner para o seu teclado fazendo [teclado = new Scanner(System.in);]
1 curtida