Duvida validar CPF

Sou iniciante em programação, estou fazendo trabalho para faculdade, e no sistema tenho que validar CPF, só pergunto para professores eles falam que na internet tem, mas não consegui usar os codigos que eu achei no meu sistema,

estou usando um JTextField normal, sem mascara sem nada, sómente digitando numeros, ai queria validar o CPF antes de salvar no banco de dados,

eu pensei em colocar o código na ação do botão salvar, antes de enviar os campos para banco de dados, mas não consegui fazer isso, se alguem puder me ajudar, porque no trabalho isso é importante o trabalho esteja validando CPF.

muito obrigado pela atenção.

// Validação CPF

[code]
public class ValidaCPF {

public ValidaCPF() {   
}   

public static boolean validaCpf(String xCPF)   
{   
	try  
	{   

		//Testa se o CPF é válido ou não   

		int d1,d4,xx,nCount,resto,digito1,digito2;   
		String Check;   
		String Separadores = "/-.";   
		d1 = 0; d4 = 0; xx = 1;   
		for (nCount = 0; nCount < xCPF.length() -2; nCount++)   
		{   
			String s_aux = xCPF.substring(nCount, nCount+1);   

			//System.out.println(s_aux);   

			if (Separadores.indexOf(s_aux) == -1) {   
				d1 = d1 + ( 11 - xx ) * Integer.valueOf (s_aux).intValue();   
				d4 = d4 + ( 12 - xx ) * Integer.valueOf (s_aux).intValue();   
				xx++;   
			};   
		};   
		resto = (d1 % 11);   
		if (resto < 2)   
		{   
			digito1 = 0;   
		}   
		else  
		{   
			digito1 = 11 - resto;   
		}   

		d4 = d4 + 2 * digito1;   
		resto = (d4 % 11);   
		if (resto < 2)   
		{   
			digito2 = 0;   
		}   
		else  
		{   
			digito2 = 11 - resto;   
		}   



		Check = String.valueOf(digito1) + String.valueOf(digito2);   

		String s_aux2 = xCPF.substring (xCPF.length()-2, xCPF.length());  

		//System.out.println(s_aux2);   
		//System.out.println(Check);   

		if (s_aux2.compareTo (Check) != 0)   
		{   

			return false;   
		}   
		return true;   
	}   
	catch (Exception e)   
	{   
		return false;   
	}   
}   

} [/code]

//Aqui como vc chama no seu JtextField

String xCpf = jTxtCPF.getText(); if (!ValidaCPF.validaCpf(xCpf)) {

abrxx

Levando em consideração que não existe CPF com todos os números iguais, taí o código

public class ValidadorCPF {

	public boolean validarCPF(String s_aux) {

		if (s_aux.length() == 11) {

			String cpf = s_aux;
			char c0 = cpf.charAt(0);
			char c1 = cpf.charAt(1);
			char c2 = cpf.charAt(2);
			char c3 = cpf.charAt(3);
			char c4 = cpf.charAt(4);
			char c5 = cpf.charAt(5);
			char c6 = cpf.charAt(6);
			char c7 = cpf.charAt(7);
			char c8 = cpf.charAt(8);
			char c9 = cpf.charAt(9);
			char c10 = cpf.charAt(10);

			//---------verificar se todos os dígitos do CPF são iguais
			if (c0 == c1 && c0 == c2 && c0 == c3 && c0 == c4 && c0 == c5 && c0 == c6 && c0 == c7 && c0 == c8 && c0 == c9 && c0 == c10) {
				return false;
			}

			int d1, d2;
			int digito1, digito2, resto;
			int digitoCPF;
			String nDigResult;
			d1 = d2 = 0;
			digito1 = digito2 = resto = 0;

			for (int n_Count = 1; n_Count &lt; s_aux.length() - 1; n_Count++) {
				digitoCPF = Integer.valueOf(s_aux.substring(n_Count - 1, n_Count)).intValue();
				//--------- Multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
				d1 = d1 + (11 - n_Count) * digitoCPF;
				//--------- Para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
				d2 = d2 + (12 - n_Count) * 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 &lt; 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 &lt; 2) {
				digito2 = 0;
			} else {
				digito2 = 11 - resto;
			}

			//--------- Digito verificador do CPF que está sendo validado.
			String nDigVerific = s_aux.substring(s_aux.length() - 2, s_aux.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);
		}

		return false;

	}

}

muito obrigado

a vocês dois, deu certinho, eu juntei a do anderson ao do lokit, para não deixar cpf com todos numeros iguais, muito obrigado, me ajudaram muito.

Olha só, mais “simples” :smiley:

[code]public static boolean validarCpf( String cpf ) {

int s1 = 0, s2 = 0, t = 0, i = 0, n;
char[] c = cpf.replace( ".", "" ).replace( "-", "" ).toCharArray();

for ( i = 1; i < c.length; i++ ) if ( c[i-1] == c[i] ) t++;
if ( t == 10 ) return false;

for ( i = 0; i < c.length - 2; i++ ) {
    n = ( ( int ) c[i] ) - 48;
    s1 += ( 10 - i ) * n;
    s2 += ( 11 - i ) * n;
}

int d1 = ( s1 %= 11 ) < 2 ? 0 : 11 - s1;
int d2 = ( s2 = ( s2 + ( 11 - i ) * d1 ) % 11 ) < 2 ? 0 : 11 - s2;

if ( d1 == ( ( int ) c[i++] ) - 48 && d2 == ( ( int ) c[i] ) - 48 )
    return true;

return false;

}[/code]