Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
jessicarosiak

Verificador de cpf Java

Recommended Posts

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!

Editado por gandalfnho
Use a tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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:

    Editado por gandalfnho
    Mensagem toda em itálico

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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:

    Editado por gandalfnho
    Use a tag CODE

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    http://www.geradorcpf.com/

    voce pode gerar cpf com esse sitepara estar o seu codigo.

    Seu codigo esta bem confuso, por que ler cada digio setarado?

    Use o nomes das variaveis com letra minuscula.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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

    Editado por gandalfnho
    Mensagem toda em itálico

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Bah, não aguento mais esse código! sahushushaiusha

    Vou o que está no site e tentar criar um link com a minha executadora!

    Qualquer coisa volto aqui, muito obrigada!

    :D

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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

    Editado por jessicarosiak
    Esqueci de colocar na tag certa.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

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

    Os " [] " são usados para criar Vetores, você não informou o valor do vetor.

    Exemplo.

    int vetor [] = new int[10];

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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!

    Editado por jessicarosiak
    Postei observações importantes.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    java.lang.ArrayIndexOutOfBoundsException: 11

    Você ta tentando acessar uma posição do array que não existe.

    if (divP != cpf[9])

    o valo(divP) é diferente(!=) do vetor(cpf) na posição nove.

    utilize o cpf.length para lhe retornar o tamanho do vetor.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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!

    ^_^

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Apresentei meu trabalho e consegui a nota máxima , pelo o desenvolvimento que fiz.

    Deixei o código mais objetivo e adicionei mais funções que no primeiro que postei aqui.

    Obrigada Jean, pelo auxílio!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×