Caro Hildebrando, este código foi inserido por por um usuários do portaljava.com em nosso fórum.
 
E o código fonte está aqui :
 
/*
 * CnpjValidator.java
 *
 */
 
package pfe.servlet.aidf.tools;
 
public class CnpjValidator {
   
    private static String cnpj;
   
    /** Creates a new instance of CnpjValidator */
    private CnpjValidator() {}
   
    public CnpjValidator(String cnpj){
        this.cnpj = cnpj;
    }
   
    public boolean isValid() {
       
        return validate();
    }
   
    public static boolean isValid(String cnpj) {
       
        return new CnpjValidator(cnpj).isValid();
    }
   
    private boolean validate() {
       
        try {
            int[] numeros = cleanCnpj(cnpj);
           
             try {
                 if(numeros[15] != 0) {
                    System.out.println("Tamanho do cnpj inválido");
                    return false;
                 }
             } catch (Exception e){
                 // Aqui o numero é válido pois o tamanho não é maior que o formal
             }
           
            int soma1 = primeiraSoma(numeros);
           
            int resto = soma1 % 11;
            int digito1 = resto < 2 ? 0 : 11 - resto;
           
            int soma2 = segundaSoma(numeros);
           
            resto = soma2 % 11;
            int digito2 = resto < 2 ? 0 : 11 - resto;
            return ((numeros[12] == digito1) && (numeros[13] == digito2));
           
        } catch (ArrayIndexOutOfBoundsException erro) {
            System.out.println("Tamanho do cnpj inválido");
        } catch (Exception erro) {
            erro.printStackTrace();
        }
       
        return false;
    }
   
    private int primeiraSoma(int[] numeros)
    throws Exception {
       
        int soma = (numeros[0] * 5) + (numeros[1] * 4) +
        (numeros[2] * 3) + (numeros[3] * 2) +
        (numeros[4] * 9) + (numeros[5] * <IMG SRC="javascript:void(0);"> +
        (numeros[6] * 7) + (numeros[7] * 6) +
        (numeros[8] * 5) + (numeros[9] * 4) +
        (numeros[10] * 3) + (numeros[11] * 2);
        return soma;
       
    }
   
    private int segundaSoma(int[] numeros)
    throws Exception {
        int soma = (numeros[0] * 6) + (numeros[1] * 5) +
        (numeros[2] * 4) + (numeros[3] * 3) +
        (numeros[4] * 2) + (numeros[5] * 9) +
        (numeros[6] * <IMG SRC="javascript:void(0);"> + (numeros[7] * 7) +
        (numeros[8] * 6) + (numeros[9] * 5) +
        (numeros[10] * 4) + (numeros[11] * 3) +
        (numeros[12] * 2);
        return soma;
       
    }
   
    private int[] cleanCnpj(String cnpj)
    throws Exception {
       
        int[] numeros = new int[cnpj.length()];
        int j = 0;
        for(int i = 0; i < cnpj.length(); i++) {
            char letra = cnpj.charAt(i);
            if( letra != '.' && letra != '/' && letra != '-')
                numeros[j++] = Integer.parseInt(String.valueOf(letra));
        }
        return numeros;
    }
}
 
[]'s
Dalton
----- Original Message -----
Sent: Saturday, November 09, 2002 10:31 PM
Subject: [java-list] Validar CNPJ e CPF

Pessoal,
 
Alguém por acaso não teria uma classe com métodos para validar CNPJ e CPF ???
 
ps.: encontrei apenas exemplos em Javascript e transforma-los para JAVA será minha ultima opção.
 
Atenciosamente,
 
Hildebrando Furlan Neto
JAVA é JÓIA
         ^
\--- /-O-\---/
     (_.--._)
 

Responder a