Código Java não funciona validação de CPF.
Olá pessoas,
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:
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:
Por favor, me ajudem, gostaria de implementar essa função antes da primeira entrega.
Desde já, muito obrigado!
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
Curtidas 0
Melhor post
Roseane Silva
25/03/2016
Eu sempre gosto de basear, alem dos livro, artigos.
Já olhou esse?
[url]https://www.devmedia.com.br/validando-o-cpf-em-uma-aplicacao-java/22097[/url]
Já olhou esse?
[url]https://www.devmedia.com.br/validando-o-cpf-em-uma-aplicacao-java/22097[/url]
GOSTEI 1
Mais Respostas
Igor Alvim
25/03/2016
Oi Roseane, também tentei esse código, o problema é que está dando Null pointer exception.
Segue a parte de verificação:
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);
}Pressione:
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)
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
Roseane Silva
25/03/2016
O seu código está mais "incrementado" não?
GOSTEI 1
Edson Venancio
25/03/2016
Ja verificou a linha 41 do seu classe Cadastro.
Este codigo nao esta com erro cara, eu ultilizei ele em uma aplicação web com um instrutor da devmedia, esta funcionando normal.
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
Roseane Silva
25/03/2016
Edson, linha 41?
GOSTEI 1
Roseane Silva
25/03/2016
?????????????
GOSTEI 0
Roseane Silva
25/03/2016
?????????????
GOSTEI 0
Roseane Silva
25/03/2016
?????????????
GOSTEI 0
William
25/03/2016
Esse seu código está estranho, vc lê a entrada do usuário e joga no atributo "cpf" do objeto pessoa, ou seja, acessamos com "pessoa.cpf", porém vc passa como parâmetro para função de validação somente "cpf"?
Essa variável "cpf" existe no escopo da função?
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?
GOSTEI 1
Igor Alvim
25/03/2016
O seu código está mais "incrementado" não?
Sim, sim, mas não tinha nada errado com o incremento, realmente meu erro foi a passagem de parâmetros.
Esse seu código está estranho, vc lê a entrada do usuário e joga no atributo "cpf" do objeto pessoa, ou seja, acessamos com "pessoa.cpf", porém vc passa como parâmetro para função de validação somente "cpf"?
#Código
Essa variável "cpf" existe no escopo da função?
#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