Validador de cédula ecuatoriana

Empezando con esta sección de pequeños trozos de código, hoy les mostraré un ejemplo muy sencillo del que todos los desarrolladores ecuatorianos podremos necesitar, validar una cédula de identidad ecuatoriana.
El proceso para saber si una cédula es valida es el siguiente:

- El décimo dígito es un resultante de un cálculo

- Se trabaja con los 9 dígitos de la cédula.

- Cada dígito de posición impar se lo duplica, si este es mayor que nueve se resta nueve.

- Se suman todos los resultados de posición impar.

- Ahora se suman todos los dígitos de posición par.

- Se suman los dos resultados.

- Se resta de la decena inmediata superior.

- Este es el décimo dígito.

- Si la suma nos resultaba 10, el décimo dígito es cero.



Ahora a continuación escribo el ejemplo en java

Bueno siempre podrán mejorarlo o adaptarlo a sus necesidades o lenguaje determinado

por ejemplo se podría sumar en un solo ciclo
Espero les sirva.

/*
 * Util.java
 * Creado el 3 de noviembre de 2005, 04:37 PM
 */
package com.logicc.data;

/**
 * Título: Util 
 * Descripción: Varias utilidades
 * Copyright: Copyright (c) 2005 - GPL License.
 * Este archivo se distribuye bajo licencia GPL de la Free Software Foundation GNU. 
 * @author Luis Antonio Burbano.
 * @version 0.1
 */

public class Util {
    /**
     * Numero de Provincias del Ecuador
     */
    public static final int NUMERO_DE_PROVINCIAS = 24;//22;   
  
    /**
     * Este método permite verificar si una cédula de identidad es verdadera
     * retorna true si es válida, caso contrario retorna false.
     * @param cedula Cédula de Identidad Ecuatoriana de 10 digitos.
     * @return Si es verdadera true, si es falsa false
     */
    public boolean esCedulaValida(String cedula) {
        //verifica que tenga 10 dígitos y que contenga solo valores numéricos
        if (!((cedula.length() == 10) && cedula.matches("^[0-9]{10}$"))) {
            return false;
        }

        //verifica que los dos primeros dígitos correspondan a un valor entre 1 y NUMERO_DE_PROVINCIAS
        int prov = Integer.parseInt(cedula.substring(0, 2));

        if (!((prov > 0) && (prov  9) ? ((d[i] * 2) - 9) : (d[i] * 2);
            imp += d[i];
        }

        //sumamos los digitos de posición par
        for (int i = 1; i 
AdjuntoTamaño
Util.java2.36 KB

Comentarios

Que mas muchachos necesito hacer un trabajo en java (En Eclipse ) y concexion a una base de datos sql sobre la creacion de ususario eliminar, modificar,crear,actualizar
si alguien tiene algo referente a eso porfa necesito de usrge ya que el licenciado se cargo y necesito para la proxima semana}
plis que alguien me heche una mano
o si alguien me puede dar haciendo mi numero 093295213 para hablar

Primero que deberias haber creado tu pregunta en el foro como un nuevo tema y no como un comentario de esta pagina del libro
pero no eres nada especifico y que te den haciendo ??? creo que te equivocaste de foro.

Play Ogg

jejeje yo hize uno igualito pero a la inversa en vez de validarlo lo generaba, lo hize en PERL (mas chevere) y PASCAL, lastima que no me acuerdo donde lo puse, si lo encuentro lo posteo.

Saludos
--
Solo un ignorante puede imaginarse que en poco tiempo se sane un pais debastado por la corrupcion de TODOS

Que chévere en perl búscalo que a muchos servirá
Play Ogg

Mi versión en Ruby
def idn?(idn)
return false unless idn.match /^[0-9]{10}$/
return false unless (1..24).include? idn[0,2].to_i
sum = 0
idn[0,9].split('').tap do |digits|
digits.each_with_index do |digit, i|
digit = digit.to_i
sum += if i % 2 == 1 then digit else (digit *= 2) > 9 ? digit -= 9 : digit end
end
end
((sum / 10 + 1) * 10 - sum) == idn[9,1].to_i
end