Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: criação validador de cpf #69

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions tutorial-challenge-validador-cpf/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// validador cpf

Scanner scanner = new Scanner(System.in);

System.out.println("===== VALIDADOR CPF =====");
System.out.println("Digite o CPF: ");
String cpf = scanner.nextLine();

boolean teste = validarCPF(cpf);

if (teste == true) {
System.out.println("CPF Válido");
} else {
System.out.println("CPF Inválido");
}

scanner.close();
}

public static boolean validarCPF(String cpf) {
cpf = cpf.replace(".", "");
cpf = cpf.replace("-", "");

int multiplicador = 10;
double soma = 0;
double modulo = 0;

if (cpf.length() == 11) {
//Primeiro passo: armazena cada digito em um array
int[] digitos = new int[11];
int[] digitosVerificadores = new int[2];

for (int i = 0; i < 11; i++) {
digitos[i] = Integer.parseInt(cpf.substring(i, i + 1));
}

//Segundo passo: multiplica-se cada um dos numeros, da direita para a esquerda por numeros crescentes a partir de 2 e armazena os resultador em uma soma
for (int i = 0; i < 9; i++) {
soma += digitos[i] * multiplicador;
multiplicador--;
}

//Terceiro passo: calcula o modulo da soma por 11
modulo = soma % 11;

//Quarto passo: define o primeiro digito verificador
if (modulo < 2) {
digitosVerificadores[0] = 0;
} else {
digitosVerificadores[0] = 11 - (int) modulo;
}

//Quinto passo: reinicia a soma e o multiplicador
soma = 0;
multiplicador = 11;
for (int i = 0; i < 10; i++) {
soma += digitos[i] * multiplicador;
multiplicador--;
}

//Sexto passo: calcula o modulo da soma por 11
modulo = soma % 11;

//Setimo passo: define o segundo digito verificador
if (modulo < 2) {
digitosVerificadores[1] = 0;
} else {
digitosVerificadores[1] = 11 - (int) modulo;
}

//Oitavo passo: compara os digitos verificadores com os digitos do cpf
if (digitosVerificadores[0] == digitos[9] && digitosVerificadores[1] == digitos[10]) {
return true;
} else {
return false;
}
} else {
return false;
}
}
}
19 changes: 19 additions & 0 deletions tutorial-challenge-validador-cpf/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
### Validador CPF

Dado um número de CPF, o algoritmo deve validar se o número dado é um número válido.
Detalhes de como o cálculo funciona pode ser encontrado aqui

Descrição da Função
A função deve ser capaz de receber o CPF como Integer ou String.

Se for String, deve retirar pontos para manter somente os números.

Em seguida, deve fazer os cálculos da validação e retornar true se o número passado for válido ou false se for invalido.

Como opção, a função pode também excluir sequências de números que são conhecidamente inválidos antes de começar os cálculos

Exemplo de Entrada
<java>"108.305.810-06"</java>

Exemplo de Saída
<java>true</java>