Fórum Código Java não funciona validação de CPF. #549453
25/03/2016
0
Então, existem alguns tópicos falando sobre esse assunto há alguns anos, mas não queria ressuscitar tópicos antigos para fazer essa pergunta.
Estou fazendo um projeto "simples" de gestão e controle de lixo eletrônico pra minha cadeira de orientação a objetos, mas estou tendo muita dor de cabeça tentando validar CPF e CNPJ pra cadastro de usuários.
Peguei várias soluções na net e até códigos prontos, o único que compilou sem dar erros foi esse:
package projetoJava2;
public class CNP extends Cadastro {
private static final int[] pesoCPF = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
private static final int[] pesoCNPJ = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
private static int calcularDigito(String str, int[] peso) {
int soma = 0;
for (int indice=str.length()-1, digito; indice >= 0; indice-- ) {
digito = Integer.parseInt(str.substring(indice,indice+1));
soma += digito*peso[peso.length-str.length()+indice];
}
soma = 11 - soma % 11;
return soma > 9 ? 0 : soma;
}
public static boolean isValidCPF(String cpf) {
if ((cpf==null) || (cpf.length()!=11)) return false;
Integer digito1 = calcularDigito(cpf.substring(0,9), pesoCPF);
Integer digito2 = calcularDigito(cpf.substring(0,9) + digito1, pesoCPF);
return cpf.equals(cpf.substring(0,9) + digito1.toString() + digito2.toString());
}
public static boolean isValidCNPJ(String cnpj) {
if ((cnpj==null)||(cnpj.length()!=14)) return false;
Integer digito1 = calcularDigito(cnpj.substring(0,12), pesoCNPJ);
Integer digito2 = calcularDigito(cnpj.substring(0,12) + digito1, pesoCNPJ);
return cnpj.equals(cnpj.substring(0,12) + digito1.toString() + digito2.toString());
}
}Ele funciona perfeitamente quando crio uma função main na própria classe e testo cpfs, mas quando coloco uma condição if na classe de Cadastro ele sempre retorna resultado inválido.
O código é esse:
System.out.print("CPF: ");
pessoa.cpf = leituraPessoa.next();
//validaçao do CPF, precisa testar!!!
if(CNP.isValidCPF(cpf) != true)
do {
System.out.printf("Erro, CPF invalido! Tente novamente\n");
pessoa.cpf = leituraPessoa.next();
} while (CNP.isValidCPF(cpf) != true);Por favor, me ajudem, gostaria de implementar essa função antes da primeira entrega.
Desde já, muito obrigado!
Igor Alvim
Curtir tópico
+ 0Post mais votado
25/03/2016
Já olhou esse?
[url]https://www.devmedia.com.br/validando-o-cpf-em-uma-aplicacao-java/22097[/url]
Roseane Silva
Gostei + 1
Mais Posts
25/03/2016
Igor Alvim
Segue a parte de verificação:
if (ValidaCPF.isCPF(CPF) != true) {
do {
System.out.printf("Erro, CPF invalido! Tente novamente\n");
pessoa.CPF = leituraPessoa.next();
}while(ValidaCPF.isCPF(CPF) != true);
}1 - Para Entrada de material reciclável
2 - Para Saída de material reciclável
3 - Para Cadastros
4 - Para pesquisas
5 - Para relatório de movimentação
6 - Para sair
3
Qual tipo de usuário você pretende cadastrar ?
1 - Pessoa Comum
2 - Pessoa Jurídica (empresa)
1
Nome Completo: Igor
CPF: 19283746555
Exception in thread "main" java.lang.NullPointerException
at usuarios.ValidaCPF.isCPF(ValidaCPF.java:9)
at projetoJava2.Cadastro.cadastrarPessoa(Cadastro.java:41)
at projetoJava2.Inicio.main(Inicio.java:43)
Gostei + 0
25/03/2016
Roseane Silva
Gostei + 1
25/03/2016
Edson Venancio
Este codigo nao esta com erro cara, eu ultilizei ele em uma aplicação web com um instrutor da devmedia, esta funcionando normal.
Gostei + 1
25/03/2016
Roseane Silva
Gostei + 1
25/03/2016
Roseane Silva
Gostei + 0
25/03/2016
Roseane Silva
Gostei + 0
25/03/2016
Roseane Silva
Gostei + 0
26/03/2016
Igor Alvim
Sim, sim, mas não tinha nada errado com o incremento, realmente meu erro foi a passagem de parâmetros.
#Código
System.out.print("CPF: ");
pessoa.cpf = leituraPessoa.next();
//validaçao do CPF, precisa testar!!!
if(CNP.isValidCPF(cpf) != true)
do {
System.out.printf("Erro, CPF invalido! Tente novamente\n");
pessoa.cpf = leituraPessoa.next();
} while (CNP.isValidCPF(cpf) != true);Essa variável "cpf" existe no escopo da função?
William, era esse mesmo o erro (erro de principiante), agora está funcionando normalmente. Muito Obrigado cara!
Obrigado a todos que tentaram ajudar :D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)