Autor Tema: Calcular letra DNI según tabla algoritmo Java ejercicio curso avanzado CU00904C  (Leído 4830 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Dejo el  ejercicio CU00904C del tutorial informático sobre java avanzado. Ejercicios ejemplos resueltos con arrays (arreglos) unidimensionales en Java. Calcular letra DNI ()

Citar
EJERCICIO

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.


Codigo de la Clase CalcularLetraDNI

Código: [Seleccionar]
import java.util.Scanner;
public class CalcularLetraDNI {
    public static Scanner entrada=new Scanner(System.in);
    public static String entradaUsuario="";
    public static String letra[]={"T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"};

    public static void main(String arg[ ]) {
        int numDNI=0;
        Scanner entrada=new Scanner(System.in);
        System.out.print("Entre el numero de DNI maximo 9 digitos :");
        numDNI=Integer.parseInt(validarNumero());
        System.out.print(obtenerLetra(numDNI));
    }//Fin del main

    //Obtener letra DNI
    public static String obtenerLetra(int numDNI){
        int posicionLetra=numDNI%23; //Obtener la posición de la letra hallando el resto
        System.out.print('\u000C');//Borrar pantalla
//En vez de presentar el numero en pantalla presento una cadena para que se presenten
//en pantalla los ceros. Si se presenta un numero los ceros de la izquierda desaparecen y
 //no se presenta el numero del DNI completo
        String NIF= "El DNI con numero "+entradaUsuario+
            " tiene la letra "+letra[posicionLetra]+"\n";
        NIF=NIF+"El DNI o NIF es: "+entradaUsuario+"-"+letra[posicionLetra];
        return NIF;

    }

    //Bucle para validar que solo se escriban numeros por teclado
    public static String validarNumero(){
        int num=0;
        boolean ok=false;
        do{

            entradaUsuario= entrada.nextLine();
            //Comprobar que sea un numero entero
            if (entradaUsuario.length()<=9){
                if (isNumeric(entradaUsuario) == true) {
                    ok=true;
                }
                else{
                    System.out.print('\u000C');//Borrar pantalla
                    System.out.print("Solo se admiten numeros\n");
                    System.out.print("Y el DNI no debe de exceder de 9 digitos");
                    entradaUsuario="";
                }
            }

        } while (!ok);
        return entradaUsuario;
    }

    public static boolean isNumeric(String str) {//Validacion numeros
        return (str.matches("[+-]?\\d.*[0-9]?") && str.equals("")==false);
    }

}//Fin de la Clase

Gracias ;)
« Última modificación: 15 de Agosto 2019, 20:27 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Buenas, para quien revise este ejercicio, está correcto y conforme a lo que se pedía. Salu2

 

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".