public class ValidaCpf {
public ValidaCpf() { }
public boolean validacpf(String strCpf){ // formato XXX.XXX.XXX-XX
if (! strCpf.substring(0,1).equals("")){
try{
boolean validado = true;
int d1, d2;
int digito1, digito2, resto;
int digitoCPF;
String nDigResult;
strCpf = strCpf.replace(\'.\',\' \');
strCpf = strCpf.replace(\'-\',\' \');
strCpf = strCpf.replaceAll(" ","");
d1 = d2 = 0;
digito1 = digito2 = resto = 0;
for (int nCount = 1; nCount < strCpf.length() -1; nCount++) {
digitoCPF = Integer.valueOf(strCpf.substring(nCount -1, nCount)).intValue();
//multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
d1 = d1 + ( 11 - nCount ) * digitoCPF;
//para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
d2 = d2 + ( 12 - nCount ) * digitoCPF;
}
//Primeiro resto da divisão por 11.
resto = (d1 % 11);
//Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
if (resto < 2)
digito1 = 0;
else
digito1 = 11 - resto;
d2 += 2 * digito1;
//Segundo resto da divisão por 11.
resto = (d2 % 11);
//Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
if (resto < 2)
digito2 = 0;
else
digito2 = 11 - resto;
//Digito verificador do CPF que está sendo validado.
String nDigVerific = strCpf.substring(strCpf.length()-2, strCpf.length());
//Concatenando o primeiro resto com o segundo.
nDigResult = String.valueOf(digito1) + String.valueOf(digito2);
//comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
return nDigVerific.equals(nDigResult);
}catch (Exception e){
System.err.println("Erro !"+e);
return false;
}
}else return false;
}
}
Read more: http://javafree.uol.com.br/topic-884185-Validacao-de-CPF.html#ixzz2Be2WE2CS