Numero de vezes que um número aparece em um Vetor?

Então, estou fazendo um código que lê as notas de n alunos, que devem ser entre 0 e 100, e imprima quantas vezes cada nota foi repetida, porém não estou conseguindo imprimir o valor corretamente, como eu poderia fazer isso? Segue o código que eu fiz:

import java.util.Scanner;

public class ExercicioVetor01 {

    public static void main(String[] args) {
        Scanner ler = new Scanner(System.in);
        System.out.println("Informe o número de alunos: ");
        int n = ler.nextInt();
        int contador = 1;
        int alunos[] = new int[n];
        for (int i = 0; i < alunos.length; i++) {
            System.out.println("Digite a nota do aluno " + (i + 1) + ": ");
            alunos[i] = ler.nextInt();
        }
        for (int j = 0; j <= 100; j++) {
            for (int i = 0; i < alunos.length; i++) {
                if (alunos[i] == j) {
                    System.out.println("A nota " + j + " apareceu " + contador + " vezes!");
                    contador++;
                }
            }
        }

    }

}

Veja se resolve…

for (int j = 0; j < alunos.length; j++) {
    for (int i = 0; i < alunos.length; i++) {
        if (alunos[j] == alunos[i]) {
            contador++;
        }
    }
    System.out.println("A nota " + alunos[j] + " apareceu " + contador + " vezes!");
    contador = 0; //lembre de resetar...
}

deu isso aqui:

Informe o número de alunos:
2
Digite a nota do aluno 1:
10
Digite a nota do aluno 2:
10
A nota 0 apareceu 3 vezes!
A nota 1 apareceu 5 vezes!
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 2
at exerciciovetor01.ExercicioVetor01.main(ExercicioVetor01.java:19)
C:\Users\Artur Pereira\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)

Ajustei lá, não percebi que você tinha deixado <= no primeiro for…

Agora tá dando assim:
Informe o número de alunos:
2
Digite a nota do aluno 1:
10
Digite a nota do aluno 2:
10
A nota 10 apareceu 3 vezes!
A nota 10 apareceu 2 vezes!

É… melhor você criar um outro vetor só com as notas…

int alunos[] = new int[n];
int notas[] = new notas[101]; //0-100 certo?

for (int i = 0; i < alunos.length; i++) {
    System.out.println("Digite a nota do aluno " + (i + 1) + ": ");
    int nota = ler.nextInt();
    alunos[i] = nota;
    notas[nota]++;
}
for (int i = 0; i <= 100; i++) {
    System.out.println("A nota " + i + " apareceu " + notas[i] + " vezes!");
}

Perceba que assim ele vai imprimir todas as notas, informando a quantidade de cada uma, se quiser imprimir apenas as notas digitadas, precisa colocar um if no segundo for…

if (notas[i] > 0) {
    System...
}
1 curtida
 for (int j = 0; j <= 100; j++) {
       while(contAlunos < alunos.length){
            if (alunos[contAlunos] == j) {
                  contador++;
                System.out.println("A nota " + j + " apareceu " + contador + " vezes!");
                contAlunos++;
            }
        }
   contAlunos = 0;
  contador = 0;

}

}

Por favor teste esse código que coloquei acima e me dê um feedback, acho que agora está certo, pois estou zerando o índice do vetor das notas a cada ciclo, qualquer dúvida só perguntar.

Observações pessoais:
a) … um código que lê as notas de n alunos, que devem ser entre 0 e 100;
Obs.: são de 0 a 100 alunos.
b) e imprima quantas vezes cada nota foi repetida.
Fim das observações.

Para fins de contagem utilizei a classe Map pois não considero interessante desenvolver uma metódologia mais complexa para contabilizar as notas repetidas, por preferir menos linhas de código.

package crisis;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Crisis {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Informe quantas notas serão adicionadas.\nMinimo 1, máximo 100.");
    float notas[] = new float[scan.nextInt()];
    if (notas.length > 0 && notas.length < 101) {
        for (int i = 0; i < notas.length; i++) {
            System.out.println("Informe a nota do" + (i + 1) + "º aluno");
            notas[i] = scan.nextFloat();
        }
        //para gerenciar as notas será utilizada a classe Map, pois ela não admitirá notas repetidas para fins de contagem
        Map<Float, Integer> contabilizarNotas = new TreeMap();//Float será a nota que servirá de chave e Integer o contador
        for (int i = 0; i < notas.length; i++) {
            contabilizarNotas.putIfAbsent(notas[i], 0);//nesta instrução a nota só será adicionada se não constar na coleção
            contabilizarNotas.put(notas[i], contabilizarNotas.get(notas[i]) + 1);//toda vez que uma nota se repete a quantidade é atualizada 
        }

        for (Float chave : contabilizarNotas.keySet()) {//percorrendo todas as notas na coleção, elas também são chaves únicas
            System.out.println("A nota: " + chave + ", se repete: " + contabilizarNotas.get(chave));//notas.get(chave) imprime o total de repetições
        }
    }
}

}