Duvida Com vetor em JSP

Boa Noite Galera.
Bom como o problema dessa vez é mais complicado (pelo menos para mim) serei bem completo na pergunta.

É o seguinte. Preciso fazer um programa que leia N número e mostre os repetidos E quantas vezes foram repetidos.

O que eu ja fiz: ja li os números, ja organizei, e ja consigui mostrar os repetidos e quantas vezes foram repetidos.

Então qual é o problema??.

O problema é que quando se usa este vetor “vet[i+1]” como comparação é preciso que o for esteja com seu tamanho menos 1 (vet.length-1). Porque??. Porque por exemplo, em um vetor com 7 posições quando ele chegar em “vet[6]” ele ira comparar com o “vet[i+1]”, nesse caso, “vet[7]” que nao existe. Daiiii o que acontece, se eu escrever por exemplo “1,3,1,3,2,1,4,3” o meu programa roda perfeitamente. O troço esta quando o maior número (eu ordeno) esta repetido…ex: “1,3,1,3,2,1,3”

Então ai vai o que eu ja tenho (comentado):

<%
        String nome = request.getParameter("nome"); //recebendo valor digitado na caixa no index.jsp
        String vet[] = nome.split(","); //nao lembro :P
        int cont = 1; //variavel usada para a repetição de numeros
        int vet1[] = new int[vet.length]; // criando vetor inteiro
        
        for(int i =0 ;i<vet.length;i++){
            vet1[i] =  Integer.parseInt(vet[i]);            // transformando cada posição em inteiro, ja que recebe do index.jsp como string
        }        
                  
        for (int i =0;i<vet1.length;i++){
            out.println (vet1[i]+" ");            //mostrando vetor inteiro, só para verificar se o código até aqui esta dando certo
        }
        %><br><%       
        for (int j = 0; j <vet1.length;j++){
            for (int i = 0; i < vet1.length-1;i++){
                if (vet1[i] > vet1[i+1]){
                    int aux = vet1[i];                 //nestes 2 for estou arrumando o vetor com bubblesort em ordem crescente (menor para o maior)
                    vet1[i] = vet1[i+1];
                    vet1[i+1] = aux;
                }
            }
        }
        
        for (int i = 0;i<vet1.length;i++){
            out.println (vet1[i]+" ");                                //neste for estou mostrando o vetor ordenado para fins de verificação tambem..
        }    
        %><br><%        
        for (int i = 0; i < vet1.length-1; i++){
            if (vet1[i] == vet1[i+1]){                             //comentario sobre este for fora do código
                cont = cont + 1;
            }else {
                if (cont != 1){
                    out.println ("O número "+vet1[i]+" foi repetido "+cont+" vezes.<br>");
                    cont = 1;
                }
            }            
        }               
        %>

O que esta acontecendo ali: estou pegando cada posição do vetor e comparando com a próxima, se for igual o contador (cont) recebe +1, senão ele mostra quantos ja foram e volta para a proxima posição, se o vetor for diferente e houver apenas 1 vez o numero (cont = 1) ele nao aparece que foi repetido nenhuma vez.
O problema como podem notar neste caso “1,3,1,3,2,1,3” ordenado “1,1,1,2,3,3,3”, é que ao chegar no ultimo numero “3” ele nao entra no else para mostrar qnts vezes o “3” foi inserido, porque ele n pode compara o ultimo com o próximo, pois nao existe.

O que eu tentei…

tentei colocar o ultimo for desse jeito:

for (int i = 0; i < vet1.length-1; i++){
            if (vet1[i] == vet1[i+1]){
                cont = cont + 1;
            }else {
                if (cont != 1){
                    out.println ("O número "+vet1[i]+" foi repetido "+cont+" vezes.<br>");
                    cont = 1;
                }
            }
            if (i == vet1.length){
                out.println ("O número "+vet1[i]+" foi repetido "+cont+" vezes.<br>");
            }
        }

Como o cont tera parado em “3” no caso, ao chegar no ultima posição do vetor (i == vet1.length) tentei mostrar qnts “3” foram repetidos…MAS NAO VAI, é como se ele ignorase essa linha -.-, help-me please :smiley: :twisted: