Problema:

Elabore um programa em Java capaz de ler um número de CPF fornecido pelo usuário e, através do cálculo do digito verificador, verifique se o número é válido.

 

Objetivo:

Desenvolver o raciocínio lógico e auxiliar na fixação dos conteúdos anteriormente apresentados.

 

/**
* Curso de Programação JAVA
*
* Exercício 11- Programa para validar os dígitos
*               verificadores do CPF
*
* @author         Prof. Eric Loque M. Xavier
* @version        1.0.0
* Data            05/01/2017
*
*/

import java.util.Scanner;

public class exercicio11 {
    public static void main(String[] args){
        {
            Scanner ler = new Scanner(System.in);
            String cpf;

            //Solicita ao usuário que informe o CPF
            System.out.println("Digite apenas os números do CPF");
            cpf = ler.nextLine();

            //Declaração e inicialização das variáveis
            boolean valido = false;
            int digito1 = 0;
            int digito2 = 0;    

            if (cpf.length() == 11)
             {
                //Calculando o primeiro digito 
				//Bloco apresentando um exemplo de atribuição
                digito1 = Integer.parseInt(cpf.substring(0,1)) * 10;
                digito1 = Integer.parseInt(cpf.substring(1,2)) * 9 + digito1;
                digito1 = Integer.parseInt(cpf.substring(2,3)) * 8 + digito1;
                digito1 = Integer.parseInt(cpf.substring(3,4)) * 7 + digito1;
                digito1 = Integer.parseInt(cpf.substring(4,5)) * 6 + digito1;
                digito1 = Integer.parseInt(cpf.substring(5,6)) * 5 + digito1;
                digito1 = Integer.parseInt(cpf.substring(6,7)) * 4 + digito1;
                digito1 = Integer.parseInt(cpf.substring(7,8)) * 3 + digito1;
                digito1 = Integer.parseInt(cpf.substring(8,9)) * 2 + digito1;
                digito1 = 11 - (digito1 % 11);

                if (digito1>9) digito1 = 0;
				
                //Calculando o segundo digito
				//Bloco apresentando outro exemplo de atribuição
                digito2 += Integer.parseInt(cpf.substring(0,1)) * 11;
                digito2 += Integer.parseInt(cpf.substring(1,2)) * 10;
                digito2 += Integer.parseInt(cpf.substring(2,3)) * 9;
                digito2 += Integer.parseInt(cpf.substring(3,4)) * 8;
                digito2 += Integer.parseInt(cpf.substring(4,5)) * 7;
                digito2 += Integer.parseInt(cpf.substring(5,6)) * 6;
                digito2 += Integer.parseInt(cpf.substring(6,7)) * 5;
                digito2 += Integer.parseInt(cpf.substring(7,8)) * 4;
                digito2 += Integer.parseInt(cpf.substring(8,9)) * 3;
                digito2 += digito1 * 2;

                digito2 = (11 - (digito2 % 11) <= 9 ) ? (11-digito2 % 11) : 0;

                valido = Integer.parseInt(cpf.substring(9,11)) == digito1*10+digito2;
             }

            if ( cpf.equals("11111111111")
              || cpf.equals("22222222222")
              || cpf.equals("33333333333")
              || cpf.equals("44444444444")
              || cpf.equals("55555555555")
              || cpf.equals("66666666666")
              || cpf.equals("77777777777")
              || cpf.equals("88888888888")
              || cpf.equals("99999999999")) valido = false;

            //Informa ao usuário se os digitos são válidos ou inválidos
            if (!valido)
                System.out.println("CPF Inválido");
            else
                System.out.printf("CPF Válido");
        }    
    }
}