Skip to content

Instantly share code, notes, and snippets.

@ismaelgasparin
Created June 19, 2018 19:13
Show Gist options
  • Save ismaelgasparin/c872ddc804a4f0c214dd2fb548375b44 to your computer and use it in GitHub Desktop.
Save ismaelgasparin/c872ddc804a4f0c214dd2fb548375b44 to your computer and use it in GitHub Desktop.
Validates CNPJ
package meuPacote;
import java.util.InputMismatchException;
public class ValidaCNPJ {
public static boolean isCNPJ(String CNPJ) {
// considera-se erro CNPJ's formados por uma sequencia de numeros iguais
if (CNPJ.equals("00000000000000") || CNPJ.equals("11111111111111") ||
CNPJ.equals("22222222222222") || CNPJ.equals("33333333333333") ||
CNPJ.equals("44444444444444") || CNPJ.equals("55555555555555") ||
CNPJ.equals("66666666666666") || CNPJ.equals("77777777777777") ||
CNPJ.equals("88888888888888") || CNPJ.equals("99999999999999") ||
(CNPJ.length() != 14))
return(false);
char dig13, dig14;
int sm, i, r, num, peso;
// "try" - protege o código para eventuais erros de conversao de tipo (int)
try {
// Calculo do 1o. Digito Verificador
sm = 0;
peso = 2;
for (i=11; i>=0; i--) {
// converte o i-ésimo caractere do CNPJ em um número:
// por exemplo, transforma o caractere '0' no inteiro 0
// (48 eh a posição de '0' na tabela ASCII)
num = (int)(CNPJ.charAt(i) - 48);
sm = sm + (num * peso);
peso = peso + 1;
if (peso == 10)
peso = 2;
}
r = sm % 11;
if ((r == 0) || (r == 1))
dig13 = '0';
else dig13 = (char)((11-r) + 48);
// Calculo do 2o. Digito Verificador
sm = 0;
peso = 2;
for (i=12; i>=0; i--) {
num = (int)(CNPJ.charAt(i)- 48);
sm = sm + (num * peso);
peso = peso + 1;
if (peso == 10)
peso = 2;
}
r = sm % 11;
if ((r == 0) || (r == 1))
dig14 = '0';
else dig14 = (char)((11-r) + 48);
// Verifica se os dígitos calculados conferem com os dígitos informados.
if ((dig13 == CNPJ.charAt(12)) && (dig14 == CNPJ.charAt(13)))
return(true);
else return(false);
} catch (InputMismatchException erro) {
return(false);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment