Article image
Erik Gonçalves
Erik Gonçalves09/03/2024 13:21
Compartilhe

Formatação de CPF em Java

  • #Java

Formatação de CPF em Java com Validação e Correção Automática

O Cadastro de Pessoas Físicas (CPF) é um documento essencial para identificação de cidadãos no Brasil. No entanto, a formatação correta do CPF pode ser um desafio, especialmente em sistemas que necessitam de entrada de dados por parte do usuário. Neste artigo, vamos abordar como formatar CPFs em Java, incluindo validação e correção automática para facilitar a entrada de dados.

Requisitos do Projeto

Para este projeto, iremos abordar os seguintes requisitos:

  1. Formatação de CPF: O CPF deve ser formatado adequadamente, seguindo o padrão XXX.XXX.XXX-XX.
  2. Validação de CPF: Verificar se o CPF é válido utilizando o algoritmo de validação de CPF.
  3. Correção Automática: Permitir que o usuário insira o CPF sem pontuações e corrigir automaticamente para o formato adequado.
  4. Validação de Existência: Verificar se o CPF é válido de acordo com as regras da Receita Federal do Brasil.

Implementação em Java

A implementação em Java consistirá em uma classe que oferece métodos para formatação, validação e correção automática de CPFs.

import java.util.regex.Pattern;


public class CPFUtil {
  // Método para formatar CPF
  public static String formatarCPF(String cpf) {
      cpf = cpf.replaceAll("[^0-9]", ""); // Remover caracteres não numéricos
      return cpf.replaceAll("(\\d{3})(\\d{3})(\\d{3})(\\d{2})", "$1.$2.$3-$4");
  }


  // Método para validar CPF
  public static boolean validarCPF(String cpf) {
      cpf = cpf.replaceAll("[^0-9]", ""); // Remover caracteres não numéricos


      if (cpf.length() != 11 || cpf.matches("(\\d)\\1{10}")) {
          return false; // CPF deve ter 11 dígitos e não pode ser formado por dígitos repetidos
      }


      // Cálculo do dígito verificador
      int[] digits = new int[11];
      for (int i = 0; i < 11; i++) {
          digits[i] = cpf.charAt(i) - '0';
      }
      int sum = 0;
      for (int i = 0; i < 9; i++) {
          sum += digits[i] * (10 - i);
      }
      int remainder = sum % 11;
      int digit1 = (remainder < 2) ? 0 : (11 - remainder);


      sum = 0;
      for (int i = 0; i < 10; i++) {
          sum += digits[i] * (11 - i);
      }
      remainder = sum % 11;
      int digit2 = (remainder < 2) ? 0 : (11 - remainder);


      return (digit1 == digits[9] && digit2 == digits[10]);
  }


  // Método para verificar a existência do CPF
  public static boolean verificarExistenciaCPF(String cpf) {
      // Implemente aqui a lógica para verificar se o CPF existe na base de dados da Receita Federal
      return true; // Retornar verdadeiro para fins de exemplo
  }


  // Método principal para teste
  public static void main(String[] args) {
      String cpf = "12345678901"; // Exemplo de CPF


      // Formatar CPF
      String cpfFormatado = formatarCPF(cpf);
      System.out.println("CPF formatado: " + cpfFormatado);


      // Validar CPF
      boolean cpfValido = validarCPF(cpf);
      System.out.println("CPF válido: " + (cpfValido ? "Sim" : "Não"));


      // Verificar existência do CPF
      boolean cpfExiste = verificarExistenciaCPF(cpf);
      System.out.println("CPF existe: " + (cpfExiste ? "Sim" : "Não"));
  }
}


Considerações Finais

Neste artigo, demonstramos como implementar formatação, validação e correção automática de CPFs em Java. É importante ressaltar que a verificação de existência do CPF na base de dados da Receita Federal do Brasil requer integração com serviços externos, e a implementação fornecida é apenas um exemplo simplificado.

Ao utilizar este código em um ambiente de produção, certifique-se de implementar todas as verificações e validações necessárias para garantir a integridade dos dados e a conformidade com as regulamentações locais.

Com estas funcionalidades implementadas, o processo de entrada e validação de CPFs em sistemas Java pode ser simplificado e mais eficiente, proporcionando uma melhor experiência para o usuário.

Compartilhe
Comentários (0)