Sugestão de
programa para cálculo dos digitos verificadores:
long
cnpj….
int d0=(int)(cnpj%10);
int d1=(int)(cnpj/10%10);
int
d2=(int)(cnpj/100%10); int
d3=(int)(cnpj/1000%10);
System.out.println("Calculo dos digitos verificadores do CNPJ:"+
cnpj/10000+"/"+d3+d2+d1+d0);
int
d4=(int)(cnpj/10000%10);
int d5=(int)(cnpj/100000%10);
int
d6=(int)(cnpj/1000000%10);
int d7=(int)(cnpj/10000000%10);
int
d8=(int)(cnpj/100000000%10); int d9=(int)(cnpj/1000000000L%10);
int
d10=(int)(cnpj/10000000000L%10); int
d11=(int)(cnpj/100000000000L%10);
int
somaprod=d0*2+d1*3+d2*4+d3*5+d4*6+d5*7+
d6*8+d7*9+d8*2+d9*3+d10*4+d11*5;
int restoAux=somaprod%11;
boolean resto0ou1=restoAux==0|restoAux==1;
int dezena=resto0ou1?0:11-restoAux;
somaprod=dezena*2+d0*3+d1*4+d2*5+d3*6+d4*7+d5*8+d6*9+
d7*2+d8*3+d9*4+d10*5+d11*6;
restoAux=somaprod%11;
resto0ou1=restoAux==0|restoAux==1;
Observe o uso de "elencamento" nos comandos envolvendo atribuição de
valores do tipo long para variáveis do tipo int.