Java

Faça um programa que leia do teclado 10 valores inteiros e armazene-o em um vetor de 10 posições. Um mesmo valor só poderá ser armazenado no máximo duas vezes. Caso um valor digitado pelo usuário já esteja com o seu limite de dois armazenamentos completo, uma mensagem elucidativa deverá ser apresentada e um novo valor deverá ser solicitado. Só poderá ser acrescentado ao vetor valores que ainda não tenham completado o seu limite de duas cópias.
segue abaixo meu codigo gostaria de ajuda nao to conseuindo por o limite de dois armazenamento.

package vetor10;

import java.util.Scanner;

public class Vetor10 {

public static void main(String[] args) {
    Scanner leia = new Scanner(System.in);
    int[] dados = new int[10]; 
    int digitado;
    
    for(int i = 0; i < 10; i++){
        System.out.print("Digite o " + (i + 1) + "º valor inteiro: ");
        digitado = leia.nextInt();
        while(jaExiste(dados, digitado, i)){
            System.out.println("Valor já existente!!!!");
            System.out.print("Digite outro valor inteiro: ");
            digitado = leia.nextInt();
        }
        dados[i] = digitado;
    }
    
    System.out.println("\n\nListagem do Vetor");
    escreveVetor(dados);
    
}

private static boolean jaExiste(int[] vetor, int dado, int totalInserido){
    for(int i = 0; i < totalInserido; i++){
        if(vetor[i] == dado)
            return(true);
    }
    return(false);
}

private static void escreveVetor(int[] vetor){
    for(int i = 0; i < 10; i++)
        System.out.println("Vetor[" + i + "] = " + vetor[i]);
}

}

Seu método jaExiste não pode simplesmente retornar true quando o elemento é encontrado. Em vez disso, o for deve contar quantas vezes ele aparece e retornar true caso esse número seja igual ou maior que 2. Algo como:

private static boolean jaExiste(int[] vetor, int dado, int totalInserido){
    int contagem = 0;

    for(int i = 0; i < totalInserido; i++){
        if(vetor[i] == dado)
            contagem++;
    }

    return (contagem >= 2);
}

Abraço