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 <= NUMERO_DE_PROVINCIAS))) {
return false;
}
//verifica que el último dígito de la cédula sea válido
int[] d = new int[10];
//Asignamos el string a un array
for (int i = 0; i < d.length; i++) {
d[i] = Integer.parseInt(cedula.charAt(i) + "");
}
int imp = 0;
int par = 0;
//sumamos los duplos de posición impar
for (int i = 0; i < d.length; i += 2) {
d[i] = ((d[i] * 2) > 9) ? ((d[i] * 2) - 9) : (d[i] * 2);
imp += d[i];
}
//sumamos los digitos de posición par
for (int i = 1; i < (d.length - 1); i += 2) {
par += d[i];
}
//Sumamos los dos resultados
int suma = imp + par;
//Restamos de la decena superior
int d10 = Integer.parseInt(String.valueOf(suma + 10).substring(0, 1) +
"0") - suma;
//Si es diez el décimo dígito es cero
d10 = (d10 == 10) ? 0 : d10;
//si el décimo dígito calculado es igual al digitado la cédula es correcta
return d10 == d[9];
}
}
| Adjunto | Tamaño |
|---|---|
| Util.java | 2.36 KB |






Trabajo
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
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.
Generador
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
Que chévere en perl búscalo que a muchos servirá
