Ir ao conteúdo
  • Cadastre-se

Verificador de cpf Java


jessicarosiak

Posts recomendados

Estou fazendo um código que deve ler um nome completo e um cpf. Porém quero que este cpf seja válido...

Estou quase desistindo do atributo cpf, mas espero que alguem dê um auxilio,sugestão aqui no tópico. Segue o código ( é uma classe executadora de outra). Todas as variaveis que não constam no código abaixo estão na classe anterior, mas é muito grande para postar aqui.

import java.util.*;

public class Executadora
{
public static void main(String[]args)
{
Scanner ler=new Scanner(System.in);
Video_locadora video =new Video_locadora();
Cpf C =new Cpf();

int x, opcao,dia;
String nome, cpf;
int dig1,dig2,dig3,dig4,dig5,dig6,dig7,dig8,dig9,dig10,dig11;



System.out.print(" Digite seu nome completo: " );
nome=ler.nextLine();

System.out.print(" Digite seu cpf: " );
dig1=ler.nextInt();
dig2=ler.nextInt();
dig3=ler.nextInt();
dig4=ler.nextInt();
dig5=ler.nextInt();
dig6=ler.nextInt();
dig7=ler.nextInt();
dig8=ler.nextInt();
dig9=ler.nextInt();
dig10=ler.nextInt();
dig11=ler.nextInt();
C.inserir(dig1,dig2,dig3,dig4,dig5,dig6,dig7,dig8,dig9,dig10,dig11);

if (cpf==" ")
{
System.out.print (" Digite um CPF para validar");
}
else if (dig1==dig2==dig3==dig4==dig5==dig6==dig7==dig8==dig9==dig10==dig11)
{
System.out.print("O CPF digitado é inválido !");
}
else{
System.out.print(" Cadastro de :" + nome );
}

...

Foi o que inventei nos últimos dias, pois não sei mais o que fazer para conseguir compilar o código.

:wacko:

Agradeço quem der uma luz ai!

Link para o comentário
Compartilhar em outros sites

Obrigada, vou verificar o código no link indicado!!!

Eu consegui compilar o código com a ideia apresentava acima, porém no momento que tento execuar a máquina virtual fica com lentidão e não executa a classe Executadora... sabe dizer o porquê ocorre isso?

Acredito que seja algo em aberto no código da classe...

:confused:

Link para o comentário
Compartilhar em outros sites

import java.util.*;

public class Executadora
{
public static void main(String[]args)
{
Scanner ler=new Scanner(System.in);
Video_locadora video =new Video_locadora();
Cpf D =new Cpf();

int x, opcao,dia;
String nome, cpf,nome_filme;;
int dig1,dig2,dig3,dig4,dig5,dig6,dig7,dig8,dig9,dig10,dig11,codigo_filme;
long cpf_in;
double valor_multa;

codigo_filme=0;

System.out.println( " Digite seu o nome completo: ");
nome=ler.nextLine();

System.out.print(" Digite seu cpf: " );
dig1=ler.nextInt();
dig2=ler.nextInt();
dig3=ler.nextInt();
dig4=ler.nextInt();
dig5=ler.nextInt();
dig6=ler.nextInt();
dig7=ler.nextInt();
dig8=ler.nextInt();
dig9=ler.nextInt();
dig10=ler.nextInt();
dig11=ler.nextInt();
// D.inserir(cpf,dig1,dig2,dig3,dig4,dig5,dig6,dig7,dig8,dig9,dig10,dig11);

/*if (dig1 == )
{
System.out.print (" Digite um CPF para validar");
}
else*/
if ( dig1==dig2 && dig1==dig3 && dig1==dig4 && dig1==dig5 && dig1==dig6 && dig1==dig7 && dig1==dig8 && dig1==dig9
&& dig1==dig10 && dig1==dig11)
{
System.out.print("O CPF digitado é inválido !");
}
else{
System.out.print(" Cadastro de :" + nome );
}


System.out.print(" Digite o nome do filme");
nome_filme=ler.nextLine();

System.out.println();
System.out.print(" Prazo de entrega: 3 dias úteis");

System.out.println();
System.out.print(" Digite o código do filme");
codigo_filme=ler.nextInt();

if( codigo_filme == 11 || codigo_filme == 12 || codigo_filme == 13)
{
System.out.println(" O valor do aluguel é:R$ 3,00" );

}
else if (codigo_filme == 14 ||codigo_filme == 15 ||codigo_filme == 16)
{
System.out.println( " O valor do aluguel é: R$ 3,90");

}
else if ( codigo_filme == 17 ||codigo_filme == 18 ||codigo_filme == 19)
{
System.out.println(" O valor do aluguel é: R$4,50");
}
else
{
System.out.println( " Código incorreto, digite os códigos relacionado ao filme");

}

System.out.println(" Digite os dias de atrasos da entrega para simular o valor da multa");
System.out.println ("1- Um dia");
System.out.println ("2- Dois dias ");
System.out.println ("3- Três dias ");
System.out.println ("4- Três dias ou mais ");
opcao=ler.nextInt();

valor_multa = 1.50 + opcao;

switch (opcao)
{
case 1:
System.out.println(" O valor da multa é R$:" + valor_multa);
break;

case 2:
System.out.println(" O valor da multa é R$:" + valor_multa);
break;

case 3:
System.out.println(" O valor da multa é R$:" + valor_multa);
break;

case 4:
System.out.println(" Valor integral R$:6,80 ");
break;

}//switch


}//main
}//class

As condições para o CPF vou verificar no link que indicou, assim vou aprimorar o código.

Esse consegui compliar sem erro,mas a máquina virtual não executa.

:unsure:

Link para o comentário
Compartilhar em outros sites

Fiz a leitura separada para a condição if logo após.

Consegui executar \o/

Mas no momento de digitar os numeros do cpf , por causa dos atributos dig1,dig2... tem que ser um numero por linha.

Fica horrível ¬¬

Obrigada pelo gerador de cpf, vai me auxiliar muito no teste de mesa.

Bom, agora eu vou ter de procurar um código que seja possível digitar o cpf na mesma linha horizontal, ou editar as condições para isso. ¬¬

Acho melhor colocar tudo em um vetor [dig1,dig2,dig3,dig4,dig5,dig6,dig7,dig8,dig9,dig10,dig11]

:mellow:

Vou aprimorar ele agora, diminur ao máximo as linhas de comando para deixa-lo mais simples... é ainda está confuso. :E

Link para o comentário
Compartilhar em outros sites

Ainda estou na batalha de conseguir concluir o meu código, mas apresenta erro não sei o motivo ( coloquei um comentário onde apresenta);

Sendo que tudo que fiz após apresenta erro ¬¬

Sabe me dizer o porquê, uma dica.. seila qualquer ajuda é bem-vinda!

import java.util.*;

public class Executadora

{

public static void main(String[]args)

{

Scanner ler=new Scanner(System.in);

Video_locadora video =new Video_locadora();

int x=0, opcao,dia,codigo_filme=0;

String nome,nome_filme;

double valor_multa = 0;

double cpf = document.validacao.cpfID.value;

String erro = new String();

System.out.println(" ** Boa tarde, bem-vindo a videolocadora do Sul** \r\n Por favor digite as informações solicitadas abaixo:");

System.out.print(" Digite o nome do filme:");

nome_filme=ler.nextLine();

System.out.println( " Digite seu o nome completo: ");

nome=ler.nextLine();

while(x<2)

{

System.out.print(" Digite seu cpf: " );

cpf=ler.nextDouble();

if (cpf.length < 11)

{

System.out.println("Sao necessarios 11 digitos para verificacao do CPF! \n\n");

}

// var nonNumbers = /\D/;

if (nonNumbers.test(cpf))

{

System.out.println("A verificacao de CPF suporta apenas numeros! \n\n");

}

if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")

{

System.out.println("Numero de CPF invalido!");

}

var a = [];// erro de compilação:illegal start of expression.

var b = new Number;

var c = 11;

for (i=0; i<11; i++){

a = cpf.charAt(i);

if (i < 9) b += (a * --c);

}

if ((x = b % 11) < 2) { a[9] = 0 }

else { a[9] = 11-x }

b = 0;

c = 11;

for (y=0; y<10; y++) b += (a[y] * c--);

if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }

if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){

System.out.println("Digito verificador com problema!");

}

if (erro.length > 0){

System.out.println"erro"

return false;

} return true;

}

}

System.out.println(" Deseja tentar novamente?");

System.out.println(" 1-Sim");

System.out.println("2-Não");

x=ler.nextInt();

System.out.println(" Prazo de entrega: 3 dias úteis");

System.out.println();

System.out.print(" Digite o código do filme:");

codigo_filme=ler.nextInt();

if( codigo_filme == 11 || codigo_filme == 12 || codigo_filme == 13)

{

System.out.println(" O valor do aluguel é:R$ 3,00" );

}

else if (codigo_filme == 14 ||codigo_filme == 15 ||codigo_filme == 16)

{

System.out.println( " O valor do aluguel é: R$ 3,90");

}

else if ( codigo_filme == 17 ||codigo_filme == 18 ||codigo_filme == 19)

{

System.out.println(" O valor do aluguel é: R$4,50");

}

else

{

System.out.println( " Código incorreto, digite os códigos relacionado ao filme");

}

while(x<2)

{

System.out.println(" Digite os dias de atrasos da entrega para simular o valor da multa");

System.out.println ("1- Um dia");

System.out.println ("2- Dois dias ");

System.out.println ("3- Três dias ");

System.out.println ("4- Três dias ou mais ");

opcao=ler.nextInt();

valor_multa = 1.50 * opcao;

switch (opcao)

{

case 1:

System.out.println(" O valor da multa é R$:" + valor_multa);

break;

case 2:

System.out.println(" O valor da multa é R$:" + valor_multa);

break;

case 3:

System.out.println(" O valor da multa é R$:" + valor_multa);

break;

case 4:

System.out.println(" Valor integral R$:6,80 ");

break;

default:

System.out.println(" Opção incorreta, digite 1 à 4");

break;

}//while

System.out.println(" Deseja tentar novamente?");

System.out.println(" 1-Sim");

System.out.println("2-Não");

x=ler.nextInt();

}//switch

}//main

}//class

Link para o comentário
Compartilhar em outros sites

Então, eu fiz uma classe para validar o CPF e puxei para a executadora, porém quando eu digito os 8 dígitos aparece um erro na condiçao:

if (divP != cpf[9])

{

return false;

}

No Terminal Windows aparece assim:

java.lang.ArrayIndexOutOfBoundsException: 11

at Validacao.calculaCPF(Validacao.java:20)

at Executadora.main(Executadora.java:44)

Portanto não consigo digitar o cpf e antes não estava validando ¬¬

Segue a classe de validação do cpf que utilizei

public class Validacao {

public boolean calculaCPF(String cpfNum) {

int[] cpf = new int[cpfNum.length()]; //define o valor com o tamanho da string

int resultP = 0;

int resultS = 0;

//converte a string para um array de integer

for (int i = 0; i < cpf.length; i++) {

cpf = Integer.parseInt(cpfNum.substring(i, i + 1));

}

//calcula o primeiro número(DIV) do cpf

for (int i = 0; i< cpf.length; i++) {

resultP += cpf * (i + 1);

}

double divP = resultP / 11;

//se o resultado for diferente ao 10º digito do cpf retorna falso

if (divP != cpf[9])

{

return false;

} // o codigo para aqui e aparece o erro que lhe informei

else {

//calcula o segundo número(DIV) do cpf

for (int i = 0; i < 10; i++) {

resultS += cpf * (i);

}

int divS = resultS % 11;

//se o resultado for diferente ao 11º digito do cpf retorna falso

if (divS != cpf[10]) {

return false;

}

}

//se tudo estiver ok retorna verdadeiro

return true;

}//main

}//class

Segue a executadora:

import java.util.*;

public class Executadora

{

public static void main(String[]args)

{

Scanner ler=new Scanner(System.in);

Video_locadora video =new Video_locadora();

Validacao V=new Validacao();

int w=0,dia,p=0,escolha=0;

int opcao=0,codigo;

String nome,nome_filme,dados,cpf;

double valor_multa = 0,codigo_filme;

System.out.println(" ** Boa tarde, bem-vindo a videolocadora do Sul** \r\n Estamos com uma promoção! A cada 2 filmes alugados o terceiro você não paga,aproveite! \r\n Por favor digite as informações solicitadas abaixo:");

ArrayList<String> c = new ArrayList<String>();

System.out.println();

System.out.print(" Digite o(s) nome(s) do(s) filme(s) :");

nome_filme=ler.nextLine();

System.out.println();

System.out.println( " Digite seu o nome completo: ");

nome=ler.nextLine();

c.add (" Nome Cadastrado:" +nome );

for( int x=0; x<c.size();x++)

{

String y=(String)c.get(x);

System.out.println ( y );

}

System.out.print("Para confirmarmos,digite seu cpf \r\n -Somente números ex:000000: " );

cpf=ler.nextLine();

//ler.nextLine();

V.calculaCPF(cpf);

System.out.println(" Prazo de entrega: 3 dias úteis");

System.out.println();

} // while(opcao<2)

while(w<2)

{

System.out.println(" Digite os dias de atrasos da entrega para simular o valor da multa");

System.out.println ("1- Um dia");

System.out.println ("2- Dois dias ");

System.out.println ("3- Três dias ");

System.out.println ("4- Três dias ou mais ");

escolha=ler.nextInt();

valor_multa = 1.50 * escolha;

switch (escolha)

{

case 1:

System.out.println(" O valor da multa é R$:" + valor_multa);

break;

case 2:

System.out.println(" O valor da multa é R$:" + valor_multa);

break;

case 3:

System.out.println(" O valor da multa é R$:" + valor_multa);

break;

case 4:

System.out.println(" Valor integral R$:6,80 ");

break;

default:

System.out.println(" Opção incorreta, digite 1 à 4");

break;

}//switch

System.out.println(" Deseja tentar novamente?");

System.out.println("1-Sim");

System.out.println("2-Não");

w=ler.nextInt();

}//while

while(opcao<2)

{

System.out.println ("Cliente quer alugar mais de um filme?");

System.out.println("1 Sim ");

System.out.println("2 Não ");

opcao=ler.nextInt();

switch (opcao)

{

case 1:

System.out.println(" Digite os códigos do filme, todos os números juntos-ex: 1112 \r\n Obs. Digite somente dois códigos em ordem crescente(1415), pois o terceiro está na promoção");

codigo_filme=ler.nextDouble();

if ( codigo_filme == 1112 || codigo_filme == 1213 || codigo_filme ==1113)

{

System.out.print("O valor do aluguel é: R$ " + (3+3));

}

else if ( codigo_filme == 1415|| codigo_filme == 1516 || codigo_filme== 1416)

{

System.out.print("O valor do aluguel é: R$ " + (3.90+3.90));

}

else if ( codigo_filme==1718 || codigo_filme==1719 || codigo_filme==1819)

{

System.out.print("O valor do aluguel é: R$ " + (4.50+4.50));

}

else if ( codigo_filme ==1114 || codigo_filme==1214 || codigo_filme==1314 || codigo_filme==1415 || codigo_filme ==1516 || codigo_filme==1617 || codigo_filme==1718 || codigo_filme==1819)

{

System.out.print("O valor do aluguel é: R$ " + (3+3.90));

}

else if ( codigo_filme ==1417 || codigo_filme==1418 || codigo_filme==1419 || codigo_filme==1619 ||codigo_filme==1518 || codigo_filme==1517 || codigo_filme==1519 || codigo_filme==1618)

{

System.out.print("O valor do aluguel é: R$ " + (3.90+4.50));

}

else if( codigo_filme == 1114 || codigo_filme==1115 || codigo_filme==1116 ||codigo_filme == 1215 || codigo_filme==1216)

{

System.out.print("O valor do aluguel é: R$ " + (3.00+3.90));

}

else if (codigo_filme ==1117 || codigo_filme==1118 || codigo_filme==1119|| codigo_filme== 1217 || codigo_filme==1218 || codigo_filme==1219 || codigo_filme==1315 || codigo_filme==1316 || codigo_filme== 1317 || codigo_filme==1318 || codigo_filme==1319)

{

System.out.print("O valor do aluguel é: R$ " + (3.00+4.50));

}

else

{

System.out.println(" Código incorreto digite de 11 ao 19");

}

break;

case 2:

System.out.print(" Digite o código do filme:");

codigo=ler.nextInt();

if( codigo== 11 || codigo== 12 || codigo == 13 )

{

System.out.println(" O valor do aluguel é:R$ 3,00" );

}

else if (codigo== 14 ||codigo== 15 ||codigo== 16)

{

System.out.println( " O valor do aluguel é: R$ 3,90");

}

else if ( codigo== 17 ||codigo== 18 ||codigo== 19)

{

System.out.println(" O valor do aluguel é: R$4,50");

}

else

{

System.out.println(" Código incorreto digite de 11 ao 19");

}

break;

}//switch

System.out.println();

System.out.println( " Tentar novamente? ");

System.out.println("1-Sim");

System.out.println("2-Não");

opcao=ler.nextInt();

}//while

System.out.println();

System.out.println();

System.out.println(" Pagamento no momento da retirada");

System.out.println();

System.out.println(" Informações processadas no cadastro para identificação na devolução");

System.out.println("Filme:" + nome_filme);

System.out.println(" Nome " + nome);

System.out.println(" CPF:" +cpf);

}//main

}//class

Sabe me dizer o que acontece para ocorrer este erro?

Meu código está correto, só falta validar o CPF e é nisso que estou apanhando....

:/

Não entendi muito bem o código para validar, mas não seria melhor em if (divP != cpf[9])

colocar ele com 10 elementos,[10]?

Assim seria possível digitar os 11 números, caso contrário retorna um print de erro!

Link para o comentário
Compartilhar em outros sites

Oi,

Tentei fazer desta forma, porém não consegui validar o cpf.

Ele só tem a condição para os 11 números, então eu deixei na forma que está para aprensentar o desenvolvimento que tentei fazer ao meu professor.

Por conta disso aumentei as funcionabilidades do meu código para compensar.

Vou apresentá-lo agora!

Muito obrigada pela ajuda , retornarei para dizer se obtive sucesso ou não em meu código!

Obrigada mesmo!

^_^

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!