Ajuda com inserção de dados em vetor

Bom dia, estou voltando a praticar java com o básico, depois de um longo tempo, voltei a um exercício que já havia feito a uns 2 anos atrás, e não to conseguindo desenvolver a lógica para resolve-lo.

import javax.swing.JOptionPane;

public class Exercicio5 {
	public static void main(String args[]) {
		int vetor[] = new int[16];
		int valor = 0;
		int i = 0;
		int cpc = 0;
		String x = " ";
		;

		
		
		
		
		for (i = 0; i < vetor.length; i++) {
			valor = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor para o vetor"));
			vetor[i] = valor;
			x += valor + "   ";
			if((vetor[i] == vetor[i + 3]) && (vetor[i + 1] == vetor[i + 2]))
				cpc ++;
			{}
				
		}
		
		
		
		JOptionPane.showMessageDialog(null, x + "\n" + cpc);
	}

	
}

//5o)   Dado um vetor do tipo int de 16 elementos, a serem digitados aleatoriamente, elaborar um programa, em linguagem Java, capaz de apresentar a quantidade de capicuas de 4 elementos existentes ao longo desse vetor 
//      (capicua: número que representa o mesmo valor quando lido da esquerda para a direita e vice-versa). Exemplo: Vetor digitado 
//  	índices:      0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 
//  	elementos: 0   1   1   0   3   2   4   4   2   2    4    7    7    7    7    7;  
//	    Total de Capicuas: 5 

Levando em conta que estou inserindo os valores do exemplo, eu já sei o que está acontecendo, provavelmente, quando o vetor chega na posição 13, que seria o elemento de número 7, ele passa pelo if que verifica a posição vetor[i] == vetor[i+3] q seria vetor[13 + 3] [16] uma posição que não existe no vetor. Acho que uma opção seria aumentar o tamanho do vetor, e dizer pra quando chegar na posição x do vetor, sair do loop e não pedir pra inserir mais números, mas acho q n seria a forma correta de corrigir esse erro.

A forma correta é não correr todo o vector no for mas parar no índice onde pode começar a última capicua

for (i = 0; i < vetor.length-3; i++) 

E, para além disso, não podes comparar com posições para a frente que ainda não inseriste (estás a fazer tudo no mesmo for)

Se quiseres fazer tudo no mesmo for, tens de comparar “para trás” e não para “a frente” e apenas o podes fazer a partir do índice em que tenhas todas as posições a comparar preenchidas:

import javax.swing.JOptionPane;
import java.util.Arrays;

public class Main {
    public static void main(String args[]) {
        int[] vetor = new int[16];
        int cpc = 0;


        for (int i = 0; i < vetor.length; i++) {
            vetor[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite um valor para o vetor"));
            if (i > 2 && (vetor[i] == vetor[i - 3]) && (vetor[i - 1] == vetor[i - 2])) {
                cpc++;
            }
        }

        JOptionPane.showMessageDialog(null, Arrays.toString(vetor) + "\n" + cpc);
    }
}

Obrigado, exatamente isso que precisava, não estava conseguindo pensar mt bem, falta de prática, valeu!