Alguem sabe como verificar o título de eleitor em java?

6 respostas
L

alguem sabe como verificar o título de eleitor em java?

6 Respostas

E

Lacerda,

O Título eleitoral não tem um dígito verificador ou algum algoritmo que o valide =(
Nem mesmo há um número específico de caracteres para o representar, como o CPF com 11 dígitos…

[]'s

R

Mas tem um ninja que fez em VB um esquema. Olhe aí:

Private Function TituloOK(s As String) As Boolean

    Dim DV1 As Integer
    Dim DV2 As Integer
    Dim i As Integer
    Dim Total As Integer
    Dim Resto As Integer
    Dim Resto2 As Integer
    Dim Numero As String
    
    Numero = ""
    
    For i = Len(s) To 12
      Numero = Numero + "0"
    Next
    
    Numero = Numero + s
    TituloOK = False
    
    DV1 = ((CInt(Mid(Numero, 1, 1)) * 2) + _
            (CInt(Mid(Numero, 2, 1)) * 9) + _
            (CInt(Mid(Numero, 3, 1)) * 8) + _
            (CInt(Mid(Numero, 4, 1)) * 7) + _
            (CInt(Mid(Numero, 5, 1)) * 6) + _
            (CInt(Mid(Numero, 6, 1)) * 5) + _
            (CInt(Mid(Numero, 7, 1)) * 4) + _
            (CInt(Mid(Numero, 8, 1)) * 3) + _
            (CInt(Mid(Numero, 9, 1)) * 2))
    Resto = DV1 Mod 11
    
    If Resto = 1 Then
        DV1 = 0
    Else
        If Resto = 0 Then
            If (((Mid(Numero, 10, 2)) = "01") Or ((Mid(Numero, 10, 2)) = "02")) Then
                DV1 = 1
            Else
                DV1 = 0
            End If
        Else
            DV1 = 11 - Resto
        End If
    End If
    
    DV2 = ((CInt(Mid(Numero, 10, 1)) * 4) + (CInt(Mid(Numero, 11, 1)) * 3) + (DV1 * 2))
    Resto2 = DV2 Mod 11
    
    If Resto2 = 1 Then
        DV2 = 0
    Else
        If Resto2 = 0 Then
            If (((Mid(Numero, 10, 2)) = "01") Or ((Mid(Numero, 10, 2)) = "02")) Then
                DV2 = 1
            Else
                DV2 = 0
            End If
        Else
            DV2 = 11 - Resto2
        End If
    End If
        
    If Mid(Numero, 12, 2) = (CStr(DV1) + CStr(DV2)) Then
      TituloOK = True
    End If

End Function

Olha outro código aí:

function validaTIT(rcpf1) {
  if (rcpf1.value.length == 0)
    return true;

  if( !( isInteger(rcpf1.value)) )
     return aviso(rcpf1,"Título Eleitoral deve ser numérico.");

  if ( !(rcpf1.value.length == 13)  )
     PoeZeros(rcpf1,13);

  rcpf2 = rcpf1.value.substr(11,2);
  j = rcpf1.value.substr(9,2);

  if ( (j<1) || (j>28) )
     return aviso(rcpf1,"Título Eleitoral inválido.")

  d1 = 0;
  for (i=0;i<9;i++)
    d1 += rcpf1.value.charAt(i)*(10-i);
  d1 = (d1 % 11);
  if (d1<=1){
     if (j<=2)
        d1 = 1 - d1;
      else
        d1 = 0;}
   else
     d1 = 11 - d1;

  if (rcpf2.charAt(0) != d1)
    return aviso(rcpf1,"Título Eleitoral inválido.");

  d1 *= 2;
  for (i=9;i<11;i++)
    d1 += rcpf1.value.charAt(i)*(13-i);
  d1 = (d1 % 11);
  if (d1<=1){
     if (j<=2)
        d1 = 1 - d1;
      else
        d1 = 0;}
   else
     d1 = 11 - d1;

  if (rcpf2.charAt(1) != d1)
    return aviso(rcpf1,"Título Eleitoral inválido.");

  return true;
}

function isInteger (s) {
    var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return false;
     
    for (i = 0; i < s.length; i++) {   
        var c = s.charAt(i);
        if (!isDigit(c)) return false;
    }
    return true;
}


function PoeZeros(valor,tam) {
   //ntam = valor.value.length;
   ntam = valor.length;
   if (ntam != 0)  {
     zeros = '0000000000000';
     if (tam != ntam) 
        valor = zeros.substr(1,13-ntam)+valor;
     return valor;
    }
}


function aviso (campo, msg){   
    alert(msg);
    campo.focus();
    campo.select();
    return false;
}

Dê uma olhada, Lacerda. Numa dessas você decifre essa lógica.

Valeu.

L

VALEU UTILIZEI O VB

E

Desconhecimento meu… não sabia que tem como verificar o título eleitoral…
Ai vai o código em JavaScript…

function validaTitulo(titulo)
{
   var tit=titulo;
   var dig1=0;
   var dig2=0;

   //separa dados do titulo

    var tam = tit.length;
    var digitos= tit.substr(tam-2,2);
    var estado=  tit.substr(tam-4,2);
    var titulo=  tit.substr(0,tam-2);
    titulo='000000000000'+titulo;
    titulo=titulo.substr(titulo.length-11,titulo.length-1) ;
    var exce=(estado=='01')||(estado=='02');
    dig1= (titulo.charCodeAt(0)-48) *2 +  (titulo.charCodeAt(1)-48) *9 +  (titulo.charCodeAt(2)-48) *8 +            (titulo.charCodeAt(3)-48) *7 +            (titulo.charCodeAt(4)-48) *6 +            (titulo.charCodeAt(5)-48) *5 +            (titulo.charCodeAt(6)-48) *4 +            (titulo.charCodeAt(7)-48) *3 +            (titulo.charCodeAt(8)-48) *2;        var resto= (dig1  % 11);
    if (resto==0)
    {
     if (exce){
         dig1=1;
         }else{
             dig1=0;
         }
     }
     else
      {
      if (resto==1){
            dig1=0;}
               else {
                dig1=11-resto;
                    }
      }

     dig2= (titulo.charCodeAt(9)-48) *4 + (titulo.charCodeAt(10)-48) *3 + dig1*2;
     resto= (dig2  % 11);
     if (resto==0)
     {
      if (exce) {dig2=1;}
            else {dig2=0;}
     }
      else
     {
    if (resto==1)
     dig2=0;
    else dig2=11-resto;
  }

  if ( (digitos.charCodeAt(0)-48==dig1) && (digitos.charCodeAt(1)-48==dig2) )
  {
   document.form1.titulo.value=document.form1.titulo2.value;
   document.form1.submit();
  }
  else
  {
   alert("Título inválido");
  }
}

*Movi o tópico para off pq o assunto fugiu do tema :wink:

[]'s

R

r2_d2, por favor, nunca mais poste códigos em VB num forum de java :sad:

:lol: :lol: :lol: :lol:

R

Ô microfilo. Eu achei no google e coloquei pro cara pegar a lógica. Nada a ver.

Criado 23 de dezembro de 2004
Ultima resposta 13 de jan. de 2005
Respostas 6
Participantes 4