All pastes #1465496 Raw Edit

Validar CPF

public java v1 · immutable
#1465496 ·published 2009-06-18 23:12 UTC
rendered paste body
/* * CPF.java *  * Criado em 19 de novembro de 2008, 10:39 */package utils;/** * A classe <code>CPF</code> possui um método estático que diz se um CPF é  * válido ou não. *  * @author João Henrique Berg dos Santos * */public class CPF {	/**	 * O método <code>validaCPF</code> recebe como parâmetro um CPF na forma de 	 * String e verifica se este CPF é válido ou não. Apenas dígitos numéricos 	 * são permitidos na String. Nenhum outro caractere é permitido.	 * 	 * @param cpf o CPF a ser verificado.	 * @return true se o CPF é válido, false se o CPF for inválido.	 */	public static boolean validaCPF(String cpf) {		boolean eValido = false; // Assume que o CPF é inválido		char[] caracteres = cpf.toCharArray(); // Os caracteres do CPF		int[] digitos = new int[caracteres.length]; // Transformados em dígitos		int somaNove = 0, somaDez = 0; // Variáveis temporárias		int digitoDez = 0, digitoOnze = 0; // Os dígitos de verificação do CPF				if (caracteres.length != 11) {			return eValido; // O CPF deve ter exatamente 11 dígitos.		}				for (int count = 0; count < caracteres.length; count++) {			if (!Character.isDigit(caracteres[count])) {				return eValido;	// Se não for um dígito não é um CPF válido.			}		}				// Transforma os caracteres em dígitos numéricos		for (int count = 0; count < caracteres.length; count++) {			digitos[count] = Character.getNumericValue(caracteres[count]);			int valor = 0;			// Soma os nove primeiros dígitos multiplicados por um valor determinado.			if (count < 9) {				valor = digitos[count] * (11 - (count + 1));				somaNove += valor;			}		}				// Usa a soma para calcular o primeiro dígito verificador.		digitoDez = 11 - (somaNove % 11);		if (digitoDez > 9) {			digitoDez = 0;		}				// Se o décimo dígito calculado for diferente do décimo dígito passado		// o CPF não é válido.		if (digitoDez != digitos[9]) {			return eValido;		}				// Soma os 10 primeiros dígitos multiplicados por um valor determinado.		for (int count = 0; count < digitos.length; count++) {			int valor = 0;			if (count < 10) {				valor = digitos[count] * (12 - (count + 1));				somaDez += valor;			}		}				// Usa a soma para calcular o segundo dígito verificador.		digitoOnze = 11 - (somaDez % 11);		if (digitoOnze > 9) {			digitoOnze = 0;		}				// Se o décimo primeiro dígito for diferente do dígito passado, o CPF não é 		// válido		if (digitoOnze != digitos[10]) {			return eValido;		}				// Se passou por todos os testes o CPF é válido		eValido = true;				return eValido;	}}