Autor Tema: Java Obtención de letra del dni a partir de los dígitos que lo componen CU00904C  (Leído 3187 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Respuesta al ejercicio CU00904C del tutorial avanzado de Java.

  :D
En España cada persona está identificada con un Documento Nacional de Identidad (DNI) en el que figura un número y una letra, por ejemplo 56999545W

La letra que sigue al número se calcula siguiendo la metodología que vamos a indicar. Crea un programa que calcule la letra de un DNI a partir del número de DNI que introduzca el usuario. Es decir, se debe pedir el DNI sin la letra por teclado y el programa nos devolverá el DNI completo (con la letra).

Para calcular la letra, se debe tomar el resto de dividir nuestro número de DNI entre 23. El resultado debe estar por tanto entre 0 y 22.

Crea un método obtenerLetra(int numeroDNI) donde según el resultado de la anterior fórmula busque en un array de caracteres la posición que corresponda a la letra. Esta es la tabla de caracteres:

Posición     0   1   2   3   4   5    6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22

Letra           T   R  W  A   G  M   Y   F   P   D   X    B    N    J    Z     S     Q   V    H    L    C    K    E

Por ejemplo, si introducimos el  DNI 20267079, el resto de dividirlo por 23 sería 8, luego la letra sería la P, que es la que ocupa esa posicion  en la matriz de caracteres.
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author ITCO1724
 */
public class EJERCICIOCU00904C {
   
   


    public static void main(String[] args) {
       //Declaramos un ArrayList que contiene objetos String letras
      ArrayList <String> letras = new ArrayList<String> ();
       
       letras.add ("T");letras.add ("R");letras.add ("W");letras.add ("A");letras.add ("G");letras.add ("M");letras.add ("Y");letras.add ("F");
       letras.add ("P");letras.add ("D");letras.add ("X");letras.add ("B");letras.add ("N");letras.add ("J");letras.add ("Z");letras.add ("S");
       letras.add ("Q");letras.add ("V");letras.add ("H");letras.add ("L");letras.add ("C");letras.add ("K");letras.add ("E");
       
       int i = 0;
        System.out.println ("Las letras de la Matriz de caracteres son: ");
        for (String matriz : letras) {  System.out.println ((i) + ".- " + matriz);
        i++;  }
 
       Scanner entrada = new Scanner(System.in);
       System.out.print("Introduzca el número de DNI: ");
       int numDNI = Integer.parseInt(entrada.nextLine());

       System.out.println();
       //System.out.println("El documento de Idenficación DNI es " +  " " + numDNI );
       int resto;
     
       resto = Math.round(numDNI % 23);
       //resto nos da el indice del arreglo letras que queremos, obtenemos el contenido con get(resto)
       System.out.println("El numero de su Documento Nacional de Identidad (DNI) es: " + numDNI + "" + letras.get(resto));
 
    }
   
}

Saludos
« Última modificación: 18 de Junio 2017, 18:53 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Luis Fdo Carvajal, el código funciona correctamente, pero no cumple con lo que se pedía en el ejercicio, que era "Crea un método obtenerLetra(int numeroDNI) donde según el resultado de la anterior fórmula busque en un array de caracteres la posición que corresponda a la letra..."

En tu código en lugar de un array de caracteres estás usando un ArrayList de String

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".