Galera eu to tentando fazer um codigo de geração de digito verificador de cnpj e ai quando eu vou somar os valores dos arrays eles retornam numeros absurdos???
Alguma ideia?
public class Validacao {
// 02998301000181
static public boolean CNPJ( String str_cnpj )
{
int soma = 0, aux, 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);
}
public static void main(String[] args ) {
Validacao v = new Validacao();
System.out.println( CNPJ("00007518000157") ?
"OK" : "Incorreto" );
v.cria_digito("000075180001");
}
public void cria_digito(String cnpj){
String digito1_cnpj="543298765432";
String digito2_cnpj="6543298765432";
char [] array = digito1_cnpj.toCharArray();
char [] array_cnpj = cnpj.toCharArray();
char [] array2 = digito2_cnpj.toCharArray();
int soma=0,digito1=0,digito2=0,soma2=0;
for(int i=0;i<=array.length-1;i++){
soma += (array[i] * array_cnpj[i]);
}
System.out.println(soma);
digito1=(soma/11);
if(digito1<2)
digito1=0;
else
digito1=(11-digito1);
System.out.println("Primeiro digito verificador --> "+digito1);
//***************** 2º digito**************
array_cnpj[12]=(char) digito1;
for(int i=0;i<=array2.length;i++){
soma2 += (array2[i] * array_cnpj[i]);
}
digito2=(soma/11);
if(digito2<2)
digito2=0;
else
digito2=(11-digito2);
System.out.println("Segundo digito verificador --> "+digito2);
}
}
Falow!!!!