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");
}
}
}