Tenho dificuldade de entender atividade de vetor

  1. Faca um programa para corrigir provas de multipla escolha. Cada prova tem 8 questoes e ̃
    cada questao vale um ponto. O primeiro conjunto de dados a ser lido do usuario ́ e o gabarito ́
    da prova. Os outros dados sao os numeros dos alunos e as respostas que deram ́ as questoes. ̃
    Existem dez alunos matriculados. Calcule e mostre:
    • O numero e a nota de cada aluno; ́
    • A porcentagem de aprovac ̧ao, sabendo-se que a nota m ınima e 6 ́

olha que eu fiz

Scanner sc = new Scanner(System.in);
int [] prova = new int[8];
int []usuario = new int [8];
int questao =1;
String nomeAluno;
int nota[] = new int[8];
String abcd;
int cont =1;
    
while (cont <= 10 ){
      System.out.println("Seu nome ");
      nomeAluno = sc.next();
      for (int j = 1; j < prova.length; j++){
          System.out.println(" " +j +" questao  : A - B - C - D" );
          abcd = sc.next();
      }
      for (int j = 0; j < prova.length; j++) {  
         System.out.println(nomeAluno+" nota: "+nota[j]);  
      }  
      cont++;
}
System.out.println("A nota do aluno  é : ");
}

como calcular nota so sei pegar o nomes de aluno.

Não precisa ler nome do aluno.

Faça como pede o enunciado:
Comece implementando a leitura do gabarito.
Depois implemente a leitura dos números dos alunos e as respostas.

Botei pra gerar automáticamente, digitar tudo isso é chato.

import java.util.ArrayList;
import java.util.stream.IntStream;

public class App {
    private static final Prova GABARITO = new Prova();
    private static final ArrayList<Prova> PROVAS_DOS_ALUNOS = new ArrayList<Prova>();
    private static final int QUANTIDADE_DE_ALUNOS = 10;

    public static void main(String[] args) {
        gerarProvasDosAlunos();
        exibir();
    }

    private static void gerarProvasDosAlunos()
    {
        IntStream.range(0, QUANTIDADE_DE_ALUNOS).forEach(i -> PROVAS_DOS_ALUNOS.add(new Prova()));
    }

    private static void exibirRespostasGabarito()
    {
        GABARITO.getRespostas().forEach(resposta -> System.out.print(resposta + " "));
    }

    private static int compararComOGabarito(Prova prova)
    {
        int i = 0;
        int pontos = 0;

        for(char resposta : prova.getRespostas())
        {
            if (resposta == GABARITO.getRespostas().get(i))
            {
                pontos++;
            }

            i++;
        }

        return pontos;
    }

    private static void exibirRespostasAlunos()
    {
        int i = 0;

        for(Prova prova : PROVAS_DOS_ALUNOS)
        {
            System.out.print(i + 1 + ") ");
            prova.getRespostas().forEach(resposta -> System.out.print(resposta + " "));
            System.out.println("Acertou: " + compararComOGabarito(prova));

            i++;
        }
    }

    private static double porcentagemDeAprovacao()
    {
        int aprovados = 0;

        for(Prova prova : PROVAS_DOS_ALUNOS)
        {
            if(compararComOGabarito(prova) >= Prova.QUANTIDADE_DE_ACERTOS_PARA_APROVACAO)
            {
                aprovados++;
            }
        }

        return (double) aprovados / PROVAS_DOS_ALUNOS.size();
    }

    private static void exibir()
    {
        System.out.println("===============================================");
        System.out.println("GABARITO");
        exibirRespostasGabarito();
        System.out.println();
        System.out.println("===============================================");
        System.out.println("RESPOSTAS DOS ALUNOS");
        exibirRespostasAlunos();
        System.out.println("===============================================");
        System.out.println("Porcentagem de Aprovação: " + porcentagemDeAprovacao() * 100 + "%");
    }
}
import java.util.ArrayList;
import java.util.Random;
import java.util.stream.IntStream;

public class Prova {
    public final static String ALTERNATIVAS = "ABCD";
    public final static int NUMERO_DE_QUESTOES = 8;
    public final static int QUANTIDADE_DE_ACERTOS_PARA_APROVACAO = 6;

    private ArrayList<Character> respostas = new ArrayList<Character>();

    Prova()
    {
        gerar();
    }

    public ArrayList<Character> getRespostas()
    {
        return respostas;
    }

    private void gerar()
    {
        Random random = new Random();

        IntStream.range(0, NUMERO_DE_QUESTOES).forEach(i -> {
            char alternativa = ALTERNATIVAS.charAt(random.nextInt(ALTERNATIVAS.length()));

            respostas.add(alternativa);
        });

    }
}