Validações de CPF e CNPJ

1 resposta
A

Pessoal… to ficando careca aki procurando um erro que não estou encontrando de forma alguma…
É o seguinte… eu irei ler um monte de cpf’s e cnpj’s válidos e inválidos… vou jogar nessa classe Utilitários que irao ver abaixo para fazer a validação dos mesmo… mas’está ocorrendo um problema… ele mostra somente um valor correto mesmo outros estando corretos… e o resto tudo incorreto… como posso fazer para resolver isso??

Se alguém puder me ajudar…
Obrigado!!

public class Utilitarios {
    private static boolean check;
    private static int soma = 0;
    private static int dig;
    private static String numero,validos="",invalidos="";
    
    File Diretorio = new File("C:\invalidos.doc");
    File Diretorio2 = new File("C:\validos.doc");
    
   
    public static boolean verifica(String valor) {
        
        if (valor.length() == 11) {
            numero = valor.substring(0,9);
            check = validaCPF(valor);
            return check;
        }
        
        if (valor.length() == 14) {
            numero = valor.substring(0,12);
            check = validaCNPJ(valor);
            return check;
        }

        return false;
    }
    
    //INÍCIO DO MÉTODO DE VERIFICAÇAO DE CPF
    public static boolean validaCPF(String valor) {
            char[] chr_numero = valor.toCharArray();
            int j;
            String x = "";
            for (int i = 0; i <= 9; i++) {
                x = String.valueOf(chr_numero[i]); 
                Integer I = new Integer(x); 
                j = I.intValue();
                soma += (j*i);
            }
            
            x = String.valueOf(chr_numero[10]); 
            Integer I = new Integer(x); 
            j = I.intValue();
            
            if (soma%11 == j){
                validos += (valor+"
");
                check = true;
            }
            else{ 
                invalidos += (valor+"
");
                check = false;
            }
            
            if (soma%11 == j) {
                try {
                    FileWriter writer_validos = new FileWriter("C:\validos.doc");
                    PrintWriter saida_validos = new PrintWriter(writer_validos,true);
                    saida_validos.println(validos);
                    saida_validos.close();
                    writer_validos.close();
                }
                catch(Exception e){
                    System.out.println(e.getMessage());
                }

            }
            
            else {
                try {
                    FileWriter writer_invalidos = new FileWriter("C:\invalidos.doc");
                    PrintWriter saida_invalidos = new PrintWriter(writer_invalidos,true);
                    saida_invalidos.println(invalidos);
                    saida_invalidos.close();
                    writer_invalidos.close();
                }
                catch(Exception e) {
                    System.out.println(e.getMessage());
                }
            }
            
            return check;
    }
    //FIM DO MÉTODO DE VERIFICAÇAO DE CPF
    
    //INÍCIO DO MÉTODO PARA VERIFICAÇAO DE CNPJ    
    public static boolean validaCNPJ(String valor) {
            char[] chr_numero = valor.toCharArray();
            for (int i = 0; i < 4; i++)
                if (chr_numero[i]-48 >= 0 && chr_numero[i]-48 <= 9)
                    soma += (chr_numero[i] - 48) * (6 - (i + 1));
            for (int i = 0; i < 8; i++)
                if (chr_numero[i+4]-48 >= 0 && chr_numero[i+4]-48 <= 9)
                    soma += (chr_numero[i+4] - 48) * (10 - (i + 1));
            dig = 11 - (soma % 11);
            numero += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);
            
            soma = 0;
            for (int i = 0; i < 5; i++)
                if ( chr_numero[i]-48 >=0 && chr_numero[i]-48 <=9 )
                    soma += (chr_numero[i] - 48) * (7 - (i + 1)) ;
            for ( int i = 0; i < 8; i++ )
                if ( chr_numero[i+5]-48 >=0 && chr_numero[i+5]-48 <=9 )
                    soma += (chr_numero[i+5] - 48) * (10 - (i + 1)) ;
            dig = 11 - (soma % 11);
            numero += ( dig == 10 || dig == 11 ) ? "0" : Integer.toString(dig);
            check = valor.equals(numero);
            
            if (valor.equals(numero))
                validos += (valor+"
");
            else 
                invalidos += (valor+"
");
            
            if (valor.equals(numero)) {
                try {
                    FileWriter writer_validos = new FileWriter("C:\validos.doc");
                    PrintWriter saida_validos = new PrintWriter(writer_validos,true);
                    saida_validos.println(validos);
                    saida_validos.close();
                    writer_validos.close();
                }
                catch(Exception e){
                    System.out.println(e.getMessage());
                }
            }
            else {
                try {
                    FileWriter writer_invalidos = new FileWriter("C:\invalidos.doc");
                    PrintWriter saida_invalidos = new PrintWriter(writer_invalidos,true);
                    saida_invalidos.println(invalidos);
                    saida_invalidos.close();
                    writer_invalidos.close();
                }
                catch(Exception e) {
                    System.out.println(e.getMessage());
                }
            }
            
            return check;
            // FIM DO MÉTODO DE VERIFICAÇAO DE CNPJ
    }  
}

1 Resposta

N

ola!

vc deve zerar a variável soma!!!

seria mais prudente se check, soma, dig, numero, validos e invalidos fossem variáveis locais…

falow, boa sorte!

Criado 27 de junho de 2003
Ultima resposta 27 de jun. de 2003
Respostas 1
Participantes 2