Boa Tarde Galera!! To precisando entender um detalhe aqui de um código e gostaria muito da vossa ajuda… eu gostaria de saber o por que subtrair o decimal “0” do caractere 0.
Não entendi muito bem e gostaria de saber …
/*
- To change this license header, choose License Headers in Project Properties.
- To change this template file, choose Tools | Templates
- and open the template in the editor.
*/
package util;
import java.util.InputMismatchException;
/**
*
-
@author Desenvolvimento
*/
public class ValidarCPF {public static boolean isCPF(String CPF) { // considera-se erro CPF’s formados por uma sequencia de numeros iguais if (CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || CPF.equals(“[telefone removido]”) || (CPF.length() != 11)) return(false);
char dig10, dig11; int soma, i, res, num, peso; // "try" - protege o codigo para eventuais erros de conversao de tipo (int) // Calculo do 1o. Digito Verificador try { soma = 0; peso = 10; // converte o i-esimo caractere do CPF em um numero: // por exemplo, transforma o caractere '0' no inteiro 0 // (48 eh a posicao de '0' na tabela ASCII) for (i=0; i<9; i++) { // 0 5 1 num = (int)(CPF.charAt(i) ); // (CPF.charAt(i) - 48); não entendi essa parte ... por que subtrair o decimal 0 do caractere 0??? soma = soma + (num * peso); peso = peso - 1; } res = 11 - (soma % 11); if ((res == 10) || (res == 11)) dig10 = '0'; else dig10 = (char)(res ); // (CPF.charAt(i) +48); converte no respectivo caractere numerico // Calculo do 2o. Digito Verificador soma = 0; peso = 11; for(i=0; i<10; i++) { num = (int)(CPF.charAt(i) ); //(CPF.charAt(i) - 48); soma = soma + (num * peso); peso = peso - 1; } res = 11 - (soma % 11); if ((res == 10) || (res == 11)) dig11 = '0'; else dig11 = (char)(res ); //(CPF.charAt(i) + 48); // Verifica se os digitos calculados conferem com os digitos informados. if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10))) return(true); else return(false); } catch (InputMismatchException erro) { return(false); } } public static String formatarCPF(String CPF) { return(CPF.substring(0, 3) + "." + CPF.substring(3, 6) + "." + CPF.substring(6, 9) + "-" + CPF.substring(9, 11)); }
}