validaçao de CPF

9 respostas
J

[b]Iae Pessoal!
Eu to começando a aprender java, e gostaria de umas dicas para criar um algoritmo para validar CPF, eu nao consigo fazer o método.
Valew[b]

9 Respostas

cado

Eu tinha feito isso uma vez, quando estava aprendendo, depois larguei mao.

http://www.cado.e1.com.br/cpf.html

cassio

Cara eu não sei qual é a regra para validar o CPF, posta ela ai que eu tento fazer o código!

Falou!

V

Ae meu chapa uma função javascript dahora pra validar cpf

function validaCPF(str) {
                 str = str.replace("-","");
				 str = str.replace(".","");
 				 str = str.replace(".","");
				 cpf = str;
				 erro = new String;
                 if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; 
                 var nonNumbers = /\D/;
                if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n"; 
                 if (cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]" || cpf == "[telefone removido]"){
                         erro += "Numero de CPF invalido!"
              }
               var a = [];
               var b = new Number;
               var c = 11;
               for (i=0; i<11; i++){
                       a[i] = cpf.charAt(i);
                       if (i < 9) b += (a[i] * --c);
               }
               if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
               b = 0;
               c = 11;
               for (y=0; y<10; y++) b += (a[y] * c--); 
               if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
               if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
                       erro +="Digito verificador com problema!";
               }
               if (erro.length > 0){
                       alert(erro);
                       return false;
               }
               return true;
       }

…depois eu mando a conta blz !
abraço,

B

vinnymaran:
Ae meu chapa um metodo dahora pra validar cnpj

public boolean CNPJ(String str_cnpj) {
		int soma = 0, dig;
		String cnpj_calc = str_cnpj.substring(0, 12);

		if (str_cnpj.length() != 14)
			return false;

		char[] chr_cnpj = str_cnpj.toCharArray();

		/* Primeira parte */
		for (int i = 0; i < 4; i++)
			if (chr_cnpj[i] - 48 >= 0 && chr_cnpj[i] - 48 <= 9)
				soma += (chr_cnpj[i] - 48) * (6 - (i + 1));
		for (int i = 0; i < 8; i++)
			if (chr_cnpj[i + 4] - 48 >= 0 && chr_cnpj[i + 4] - 48 <= 9)
				soma += (chr_cnpj[i + 4] - 48) * (10 - (i + 1));
		dig = 11 - (soma % 11);

		cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);

		/* Segunda parte */
		soma = 0;
		for (int i = 0; i < 5; i++)
			if (chr_cnpj[i] - 48 >= 0 && chr_cnpj[i] - 48 <= 9)
				soma += (chr_cnpj[i] - 48) * (7 - (i + 1));
		for (int i = 0; i < 8; i++)
			if (chr_cnpj[i + 5] - 48 >= 0 && chr_cnpj[i + 5] - 48 <= 9)
				soma += (chr_cnpj[i + 5] - 48) * (10 - (i + 1));
		dig = 11 - (soma % 11);
		cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);

		return str_cnpj.equals(cnpj_calc);
	}

…depois eu mando a conta blz !
abraço,

cnpj != cpf

V

heheehehh desculpas…, ja arrumei :slight_smile:

J

Valew ae!!
Depois mi manda a conta!!
hauhuauha

J

Oww!!
Disculpa ignorancia…mas esse código tbm servepra CPF ou so pra cnpj mesmo???

Matheus_Tardivo

Você pode usar a BrazilUtils API: [url]http://brazilutils.dev.java.net[/url]

Exemplo:
import org.brazilutils.br.cpfcnpj.Cpf;
import org.brazilutils.br.cpfcnpj.CpfCnpj;
import org.brazilutils.br.cpfcnpj.Cnpj;
import org.brazilutils.validation.ValidationException;

class TestCpf {

	public static void main(String[] args) {
		String cpf1 = "[CPF removido]"; // cpf valido
		String cpf2 = "[telefone removido]"; // cpf valido
		String cpf3 = "[telefone removido]"; // cpf invalido

		String cnpj1 = "71.260.392/0001-76"; // cnpj valido
		String cnpj2 = "74963731000179"; // cnpj valido
		String cnpj3 = "12345678912345"; // cnpj invalido

		try {
			CpfCnpj[] c = new CpfCnpj[6];
			c[0] = new Cpf(cpf1);
			c[1] = new Cpf(cpf2);
			c[2] = new Cpf(cpf3);

			c[3] = new Cnpj(cnpj1);
			c[4] = new Cnpj(cnpj2);
			c[5] = new Cnpj(cnpj3);

			for (int i = 0; i < c.length; i++) {
				String tipo = null;

				// verifica cpf
				if (c[i].isCpf()) {
					tipo = "Cpf";
				} else {
					tipo = "Cnpj";
				}

				System.out.println(tipo + " : " + c[i] +
					" - isValid(): " + c[i].isValid());
			}
		} catch (ValidationException e) {
			e.printStackTrace();
		}
	}
}
Veja o resultado:
Cpf : 12?.48?.55?-??- isValid(): true
Cpf : 78?.71?.13?-?? - isValid(): true
Cpf : 12?.45?.78?-?? - isValid(): false
Cnpj : 71?.60?.92?-00176 - isValid(): true
Cnpj : 74?.63?.31?-00179 - isValid(): true
Cnpj : 12?.45?.78?-12345 - isValid(): false

[color=darkred]Editado por Luca para não aparecer nenhum CPF válido. Quem quiser testar coloque seu próprio CPF.[/color]

P

import java.util.*;

/**

  • Classe com método para validação de CPF
  • Pode ser utilizada livremente e modificada para se integrar à sistemas mais complexos.

*/
public class CPF {

/** Realiza a validação do CPF.

*

* @param   strCPF número de CPF a ser validado

* @return  true se o CPF é válido e false se não é válido

*/

static public boolean CPF (String strCpf )

{

int     d1, d2;

int     digito1, digito2, resto;

int     digitoCPF;

String  nDigResult;
d1 = d2 = 0;
  digito1 = digito2 = resto = 0;

  for (int nCount = 1; nCount &lt; 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 &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 = 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);

}

/*

public static void main(String[] args) {

System.out.println( CPF("[telefone removido]") );

}

*/

}
Criado 13 de julho de 2006
Ultima resposta 16 de jul. de 2006
Respostas 9
Participantes 7