JAVA – Framework TotalCross:
1º – Chamada ao método e conferência:
// Cnpj passado sem os dois últimos dígitos. No método calcDigVerifCnpj() os caracteres especiais são removidos. Ex:12.345.678/0001-
String digitoVerificador = calcDigVerifCnpj(edtCgcCpf.getText().substring(0, edtCgcCpf.getText().length() - 2));
if(!digitoVerificador.equals(edtCgcCpf.getText().substring(16)))
System.out.println("Dígito verificador do CNPJ inválido");
2º – Método que calcula o dígito verificador do CNPJ:
public String calcDigVerifCnpj(String cnpj) {
cnpj = formataRemocaoCaracteresEspeciais(cnpj);
int[] arrNum = new int[]{5,4,3,2,9,8,7,6,5,4,3,2};
int soma = 0, divisao = 11, primDig = 0, segDig = 0;
for (int i = 0; i < arrNum.length; i++)
soma += arrNum[i] * Integer.parseInt(cnpj.substring(i, i+1));
primDig = (soma % divisao);
if(primDig < 2)
primDig = 0;
else
primDig = (11 - primDig);
cnpj += primDig;
arrNum = new int[]{6,5,4,3,2,9,8,7,6,5,4,3,2};
soma = 0;
for (int j = 0; j < arrNum.length; j++)
soma += arrNum[j] * Integer.parseInt(cnpj.substring(j, j+1));
segDig = (soma % divisao);
if(segDig < 2)
segDig = 0;
else
segDig = (11 - segDig);
return ""+primDig + segDig;
}
3º – Remoção dos caracteres especiais:
public String formataRemocaoCaracteresEspeciais(String valor){
if (valor.indexOf(",") != -1 || valor.indexOf(".") != -1 || valor.indexOf("-") != -1 || valor.indexOf("/") != -1) {
StringBuffer valorAux = new StringBuffer();
for (int i = 0; i < valor.length(); i++)
if ((valor.charAt(i) != ',') && (valor.charAt(i) != '.') && (valor.charAt(i) != '-') && (valor.charAt(i) != '/'))
valorAux.append(valor.charAt(i));
valor = valorAux.toString();
}
return valor;
}