Averiguar la letra del DNI

Cómo averiguar la letra del DNI en Java

Los DNI están pensados para que en caso de que haya algún error al escribirlo poder detectar esos fallos fácilmente sin tener que hacer ninguna comprobación en la base de datos al igual que en las cuentas bancarias.

En el siguiente pedazo de código veremos un ejemplo de como calcular el DNI en Java.

Para que un DNI sea correcto la letra tiene que corresponder a la cadena de números.

La letra del DNI se calcula obteniendo el resto de la división de su número entre 23 y el número restante es el que corresponde a la letra.

Resto 0 1 2 3 4 5 6 7 8 9 10 11
Letra T R W A G M Y F P D X B
Resto 12 13 14 15 16 17 18 19 20 21 22
Letra N J Z S Q V H L C K E

Código main

En el main tenemos un bucle que pide un String (DNI) mientras la longitud no sea de este no sea 9. Antes de comprobar la longitud quita todos los espacios mediante trim() y replaceAll().

Luego llama al método comprobarDni y le pasa la cadena dni. En este método tenemos un array de caracteres en el cual están ordenadas del 0 al 22 que son las correspondientes letras.

Método comprobarDni

  1. Primero comprobamos que el último carácter (el 8) sea una letra con el método isLetter() y si es true entonces guarda la letra.
  2. Después realiza un bucle for de las letras que previamente han sido guardadas en una cadena mediante substring(). En el bucle se comprueba que cada posición del la cadena sea un dígito y si lo es entonces hace contaNumeros++.
  3. Luego si contaNumeros es igual a 8 es decir, que todas las posiciones de la cadena son dígitos lo pasará a int mediante el método valueOf().
  4. Por último se calcula el resto de esos números y si la posición del valor resto del array es igual a la letra entonces el DNI es válido, en caso de ser falso mostrará que letra corresponde al DNI que se ha introducido.

Para terminar puedes descargar el código del programa de Github.

Si estás interesado pequeños programas como este puedes ver la sección de Programas básicos o sugerir cual te gustaría ver en la sección de comentarios 🙂

Publicado en Java, Programación, Programas básicos.

Estudiante de programación aficionado a las nuevas tecnologías y amante de los videojuegos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *