GARANTIR DESCONTO

Fórum Código Java não funciona validação de CPF. #549453

25/03/2016

0

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:
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

Igor Alvim

Responder

Post mais votado

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]

Roseane Silva

Roseane Silva
Responder

Gostei + 1

Mais Posts

25/03/2016

Igor Alvim

Oi Roseane, também tentei esse código, o problema é que está dando Null pointer exception.

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)
Responder

Gostei + 0

25/03/2016

Roseane Silva

O seu código está mais "incrementado" não?
Responder

Gostei + 1

25/03/2016

Edson Venancio

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.
Responder

Gostei + 1

25/03/2016

Roseane Silva

Edson, linha 41?
Responder

Gostei + 1

25/03/2016

Roseane Silva

?????????????
Responder

Gostei + 0

25/03/2016

Roseane Silva

?????????????
Responder

Gostei + 0

25/03/2016

Roseane Silva

?????????????
Responder

Gostei + 0

26/03/2016

Igor Alvim

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
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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar