Created
June 19, 2018 19:13
-
-
Save ismaelgasparin/c872ddc804a4f0c214dd2fb548375b44 to your computer and use it in GitHub Desktop.
Validates CNPJ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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