Gerar cnpj

galera pesquisei na net e não encontrei,alguem teria o codigo pronto que faça o algoritmo de gerar o cnpj.

alguem teria ele?

valeu!!!

Gerar ou validar?

Mesmo que seja gerar, vc pode usar o algoritmo de validação para gerar um CNPJ. Vc criar valores aleatórios para no final gerar os dígitos de verificação. Pronto, vc tem um CNPJ “válido”.

[]´s

caso eu tenha esse codigo aqui que valida posso transformar ele como um gerador certo?

[code]
public static boolean validaCnpj( String str_cnpj ) {

	if (! str_cnpj.substring(0,1).equals("")){   
       
    	try{   
            str_cnpj=str_cnpj.replace('.',' ');   
            str_cnpj=str_cnpj.replace('/',' ');   
            str_cnpj=str_cnpj.replace('-',' ');   
            str_cnpj=str_cnpj.replaceAll(" ","");   
            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);   
        }catch (Exception e){   
            System.err.println("Erro !"+e);   
            return false;   
        }   
    }else return false;   
	
	    
    }     
       
}  [/code]

apos isso teria que fusar isso certo?

public static String geraCNPJ() { String iniciais = ""; Integer numero; for (int i = 0; i < 9; i++) { numero = new Integer((int) (Math.random() * 10)); iniciais += numero.toString(); } return iniciais + calcDigVerif(iniciais); }

Você testou?
Deu certo?

não apenas demostrei a validação e onde que ele vai gerar se por desse modo pode ser feito!!!

fiz isso ate agora

mas agora enpacou

[code]public class gera {

/** Creates a new instance of ValidaCnpj */  
public gera() {   
	
}   
//public static  boolean validaCnpj( String str_cnpj ) {   
    
       
	 public static boolean validaCnpj(String str_cnpj) {     
        if (str_cnpj.length() != 14)  

// str_cnpj=str_cnpj.replace(’.’,’ ‘);
// str_cnpj=str_cnpj.replace(’/’,’ ‘);
// str_cnpj=str_cnpj.replace(’-’,’ ');
// str_cnpj=str_cnpj.replaceAll(" “,”");
return false;
String numDig = str_cnpj.substring(0, 12);
return calcDigVerif(numDig).equals(str_cnpj.substring(0, 12));
}

		private static String calcDigVerif(String str_cnpj) { 
		     
			Integer primDig, segDig;
			
            int soma = 0, aux, dig;   
            String cnpj_calc = str_cnpj.substring(0,12);                    
            if ( str_cnpj.length() != 14 )   
               
            	return false; ----ele não aceita isso pois ele pede pro metodo retornar boolean...teria outra possiblidade de não fazer isso!!
            
            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);   
        }   
		  public static String geraCNPJ() {     
		        String iniciais = "";     
		        Integer numero;     
		        for (int i = 0; i < 14; i++) {     
		            numero = new Integer((int) (Math.random() * 13));     
		            iniciais += numero.toString();     
		        }     
		        return iniciais + calcDigVerif(iniciais);     
		    }     
       	
	    
    }     
       [/code]

http://ghiorzi.org/cgcancpf.htm

Se for simplesmente gerar um número de 14 dígitos e então verificar com a fórmula de verificação de CNPJ, Você tem de gerar em média 500 números aleatórios para que um deles seja um CNPJ válido.

É que há 3 dígitos de verificação: o oitavo dígito é um dígito de verificação, assim como o penultimo e o último dígitos.

Ou seja, apenas 1 número de 14 dígitos em cada 1000 (10 * 10 * 10) é um CNPJ válido.

Em vez disso, gere para as posições de 1 a 7, e de 9 a 12, um número aleatório. Então, para as posições 8, 13 e 14, ache os dígitos de verificação.