Validando o CPF em uma Aplicação Java
Veja neste artigo uma aplicação Java para validar números do Cadastro de Pessoa Física (CPF).
Artigos Java Validando o CPF em uma Aplicação Java
O CPF é um número formado por 11 dígitos dos quais os dois últimos são chamados de dígitos verificadores (DV). Cada DV é calculado com base nos dígitos anteriores e juntos servem para validar o número do CPF como um todo. Assim, torna-se importante quando um número de CPF é digitado pelo usuário final em uma aplicação utilizar o método isCPF() , implementado no pacote "meuPacote" apresentado na Listagem 1, para verificar se o número informado está correto evitando, por exemplo, o cadastro de CPFs inválidos.
Saiba mais: Android Developer
Para calcular o 1º dígito verificador
Cada um dos nove primeiros números do CPF é multiplicado por um peso que começa de 10 e que vai sendo diminuido de 1 a cada passo, somando-se as parcelas calculadas:
Calcula-se o dígito através da seguinte expressão:
Para calcular o 2º dígito verificador
Cada um dos dez primeiros números do CPF, considerando-se aqui o primeiro DV, é multiplicado por um peso que começa de 11 e que vai sendo diminuido de 1 a cada passo, somando-se as parcelas calculadas:
Criar um pacote Java e identificá-lo com o nome "meuPacote". No pacote criado implementar a classe Java ValidaCPF, mostrada na Listagem 1, com os métodos:
isCPF() - retorna um valor booleano que indica se o número de CPF é válido ou inválido;
imprimeCPF() - retorna o CPF formatado na máscara: 999.999.999-99.
public static boolean isCPF(String CPF) {
// considera-se erro CPF's formados por uma sequencia de numeros iguais
if (CPF.equals("00000000000") ||
CPF.equals("11111111111") ||
CPF.equals("88888888888") || CPF.equals("99999999999") ||
(CPF.length() != 11))
char dig10, dig11;
// "try" - protege o codigo para eventuais erros de conversao de tipo (int)
peso = 10;
// converte o i-esimo caractere do CPF em um numero:
// (48 eh a posicao de '0' na tabela ASCII)
num = (int)(CPF.charAt(i) - 48);
peso = peso - 1;
r = 11 - (sm % 11);
else dig10 = (char)(r + 48); // converte no respectivo caractere numerico
else dig11 = (char)(r + 48);
// Verifica se os digitos calculados conferem com os digitos informados.
if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10)))
public static String imprimeCPF(String CPF) {
return(CPF.substring(0, 3) + "." + CPF.substring(3, 6) + "." +
CPF.substring(6, 9) + "-" + CPF.substring(9, 11));
Outro aspecto destacável da programação foi a utilização da estrutura de controle de erros try – catch que irá proteger o código para eventuais erros de conversão de tipo feita pelo operador de coerção (int).
Implementar a classe principal Exemplo mostrada na Listagem 2.
// importanto a classe "ValidaCPF" do pacote "meuPacote"
import meuPacote.ValidaCPF;
System.out.printf("Informe um CPF: ");
CPF = ler.next();
// usando os metodos isCPF() e imprimeCPF() da classe "ValidaCPF"
if (ValidaCPF.isCPF(CPF) == true)
System.out.printf("%s\n", ValidaCPF.imprimeCPF(CPF));
else System.out.printf("Erro, CPF invalido !!!\n");
Alguns aspectos da programação utilizada na classe ValidaCPF apresentada na Listagem 1 foram abordados no post:
O que são String em Java: Métodos da Classe String: String em Java.
Tabela 1. Testando a execução da aplicação da Listagem 2
Pesquisamos quais são as dúvidas inicias de quem está começando no Android e decidimos responder algumas delas neste DevCast.